我为数字输入创建了一个模板,如果我这样做了
@Html.EditorFor(model => model.SomeValue, "Number")
它工作正常,并使用模板。
然而,这不起作用:
@Html.EditorFor(model => model.SomeValue)
为什么我需要为基本类型指定编辑器模板的名称?
答案 0 :(得分:90)
编辑器模板按惯例工作。模板的名称必须与类型的名称匹配。例如,如果SomeValue
是int
类型,您可以在~/Views/Shared/EditorTemplates/Int32.cshtml
处编写一个自定义编辑器模板,该模板将被使用。在这种情况下,当您编写@Html.EditorFor(model => model.SomeValue)
时,所有整数类型都将使用此自定义模板。
如果您不想覆盖整数类型的所有模板,您可以编写一个特定的命名模板~/Views/Shared/EditorTemplates/Number.cshtml
,通过将此模板名称指定为{{1}的第二个参数,您只能将其用于某些属性} helper:EditorFor
或使用@Html.EditorFor(model => model.SomeValue, "Number")
属性修饰您的视图模型属性:
[UIHint]
然后只需使用[UIHint("Number")]
public int SomeValue { get; set; }
即可呈现@Html.EditorFor(model => model.SomeValue)
自定义模板。
我还建议你阅读Brad Wilson的blog post
关于ASP.NET MVC中的默认模板。
答案 1 :(得分:1)
在编辑器模板中,您必须具有相同的类型 示例:
model.SomeValue是loremIpsumObject的类型
在您的EditorTemplate中,您是:
@model YourNamespaceWhereIsYourClass.loremIpsumObject
...And your code in your editorTemplate....
您可以找到日期时间here的示例
它对你有帮助吗?