0

モデルオブジェクトと一緒に、デリゲートまたはコマンドオブジェクトを引数としてEditorForに送信したいと思います。viewdataを使用して送信することもできますが、強く入力したいと思います。これを行うための合理的な方法はありますか?

これは、大まかに言って、エディターテンプレートで実行できるようにしたいことです。

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Pair<MyModelType, TheDelegate>>" %>

しかし、どうすればこのような式にデリゲートを追加できますか?

<%= Html.EditorFor(m => m.MyModelTypeField, "ThatEditor") %>
4

1 に答える 1

1

ビューモデルを変更し、コントローラーに必要な情報を渡さない限り、これを強く型付けされた方法で行うことはできません。それで

public class MyModelTypeWithDelegate
{
    public MyModelType MyModelType { get; set; }
    public TheDelegate MyModelTypeDelegate { get; set; }
}

public class MyViewModel
{
    public MyModelTypeWithDelegate MyModelTypeWithDelegate { get; set; }
}

その後:

<%= Html.EditorFor(m => m.MyModelTypeWithDelegate, "ThatEditor") %>

もう1つの可能性は、それを追加のviewdataとして渡すことですが、強く型付けされることはありません。

<%= Html.EditorFor(m => m.MyModelTypeField, "ThatEditor", new { TheDelegate = someDelegate }) %>

次に、エディターテンプレート内:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyModelType>" %>
<%
    var del = (TheDelegate)ViewData["TheDelegate"];
%>
于 2011-01-28T11:10:27.803 に答える