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") %>

另一种可能性是将其作为附加视图数据传递,但不会是强类型:

<%= 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 回答