请阅读文章,了解如何使用此网址http://www.iminfo.in/post/mvc-multiple-checkboxes-select-in-html-table-bootstrap
重新使用模板这篇文章显示我们需要在带有viewmodel名称的编辑器模板文件夹中创建一个模板文件。
我只想知道MVC @ Html.EditorFor如何指向或拾取到正确的模板文件。需要一些指导线,如MVC如何解析正确的模板。感谢
答案 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"的显示模板执行相同的操作。助手。