如何@ Html.EditorFor解析或指向正确的模板

时间:2015-10-11 09:03:28

标签: asp.net-mvc

请阅读文章,了解如何使用此网址http://www.iminfo.in/post/mvc-multiple-checkboxes-select-in-html-table-bootstrap

重新使用模板

这篇文章显示我们需要在带有viewmodel名称的编辑器模板文件夹中创建一个模板文件。

enter image description here

我只想知道MVC @ Html.EditorFor如何指向或拾取到正确的模板文件。需要一些指导线,如MVC如何解析正确的模板。感谢

2 个答案:

答案 0 :(得分:2)

默认情况下,模板按数据类型解析,因此如果您使用

@Html.EditorFor(model => model.ProductViewModel)它将使用EditorTemplates/ProductViewModel.cshtml模板。

但是,如果您需要使用其他模板,则可以使用覆盖模板名称的@Html.EditorFor(model => model.ProductViewModel, "yourTemplateName")覆盖。

其他选项是在属性上使用UIHint attribute设置模板,例如:

public class ComplexModel
{
    //will search for EditorTemplates/SomeProductModelTemplate.cshtml
    [UIHint("SomeProductModelTemplate")]
    public ProductViewModel ProductModel {get;set;}
}

答案 1 :(得分:1)

模板按数据类型解析。在您的示例中,您有一个带有ProductViewModel模板的编辑器模板文件夹。然后,如果您使用带有ProductViewModel类型的EditorFor方法在主目录下创建视图,则MVC将解析自定义编辑器模板。同样,如果您在编辑器模板下创建了一个DateTime.cshtml文件,那么它将用于带有DateTime参数的EditorFor方法调用。

@Html.EditorFor(model => model.ProductViewModelItem) //will use the custom template
@Html.EditorFor(model => model.StringItem) //will not use the custom template

您也可以对DisplayFor或任何其他Html"的显示模板执行相同的操作。助手。