ASP.NET MVC 4编辑器模板,用于基本类型

时间:2013-02-01 22:14:12

标签: asp.net-mvc-4 mvc-editor-templates

我为数字输入创建了一个模板,如果我这样做了

@Html.EditorFor(model => model.SomeValue, "Number")

它工作正常,并使用模板。

然而,这不起作用:

@Html.EditorFor(model => model.SomeValue)

为什么我需要为基本类型指定编辑器模板的名称?

2 个答案:

答案 0 :(得分:90)

编辑器模板按惯例工作。模板的名称必须与类型的名称匹配。例如,如果SomeValueint类型,您可以在~/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的示例

它对你有帮助吗?