ASP.NET MVC Html.Editor 将模型传递给编辑器模板

ASP.NET MVC Html.Editor pass model to Editor Template

我有一个名为 "Address.cshtml" 的编辑器模板,其模型定义为:

@model Acme.Models.Address

在一个视图中,我想调用编辑器模板并传递一个相同类型的局部变量,并定义它将用于变量的名称,我尝试了很多方法,包括:

@Html.Editor("address", "Address", new { Model = address })

如何通过模型?

注意,我不能使用@Html.EditorFor(),因为视图使用不同的模型。

EditorFor 的目的是使用您的视图模型。如果您需要使用完全不同的 class 实例,该实例不是您的视图模型或可通过您的视图模型访问。然后只需使用 Html.Partial。它们在功能上是相同的。如果您担心使用特定的编辑器模板,您可以随时将视图的完整路径传递给 Html.Partial

在视图中(在其 header 或其他地方,但在您调用 Html.Editor 的行之前)您可以在 ViewData 中添加模型,其键等于您的 Html.Editor 的表达式,它会在你调用的编辑器中用作模型。例如:

@{
    var address = new Acme.Models.Address();
    ViewData["address] = address;
}

@Html.Editor("address", "Address")