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