Asp.net mvc 具有复合模型类型的MVC编辑器?

Asp.net mvc 具有复合模型类型的MVC编辑器?,asp.net-mvc,editorfor,Asp.net Mvc,Editorfor,我想将委托或命令对象作为参数与模型对象一起发送给EditorFor。我可以使用viewdata发送它,但我非常希望它是强类型的。有什么合理的方法可以做到这一点吗 这大致就是我希望能够在编辑器模板中执行的操作: <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Pair<MyModelType, TheDelegate>>" %> <%@ Control Language

我想将委托或命令对象作为参数与模型对象一起发送给EditorFor。我可以使用viewdata发送它,但我非常希望它是强类型的。有什么合理的方法可以做到这一点吗

这大致就是我希望能够在编辑器模板中执行的操作:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Pair<MyModelType, TheDelegate>>" %>
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyModelType>" %>
<%
    var del = (TheDelegate)ViewData["TheDelegate"];
%>

但是如何将我的委托添加到这样的表达式中

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

除非修改视图模型并让控制器传递必要的信息,否则无法以强类型方式执行此操作。所以

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") %>
m.MyModelTypeWithDelegate,“ThatEditor”)%%>
另一种可能是将其作为附加viewdata传递,但它不会是强类型的:

<%= Html.EditorFor(m => m.MyModelTypeField, "ThatEditor", new { TheDelegate = someDelegate }) %>
m.MyModelTypeField,“ThatEditor”,新的{TheDelegate=someDelegate})%>
然后在编辑器模板中:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Pair<MyModelType, TheDelegate>>" %>
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyModelType>" %>
<%
    var del = (TheDelegate)ViewData["TheDelegate"];
%>

我希望可以在m=>m.MyModelTypeField表达式中创建另一种类型的新实例。谢谢你让我知道!