【问题标题】:ASP.NET MVC 4 Editor Template for basic types基本类型的 ASP.NET MVC 4 编辑器模板
【发布时间】:2013-02-01 22:14:11
【问题描述】:

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

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

它工作正常并且使用了模板。

但这不起作用:

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

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

【问题讨论】:

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


    【解决方案1】:

    编辑器模板按惯例工作。模板的名称必须与类型的名称匹配。例如,如果SomeValueint 类型,您可以在~/Views/Shared/EditorTemplates/Int32.cshtml 处编写自定义编辑器模板,该模板将被使用。在这种情况下,当您编写 @Html.EditorFor(model => model.SomeValue) 时,所有整数类型都将使用此自定义模板。

    如果您不想覆盖整数类型的所有模板,您可以编写一个特定的命名模板~/Views/Shared/EditorTemplates/Number.cshtml,通过将此模板名称指定为EditorFor 帮助器的第二个参数,您只能用于某些属性:@ 987654328@ 或使用 [UIHint] 属性装饰您的视图模型属性:

    [UIHint("Number")]
    public int SomeValue { get; set; }
    

    然后简单地使用@Html.EditorFor(model => model.SomeValue) 将呈现Number.cshtml 自定义模板。

    我还建议您阅读 Brad Wilson 的 blog post,了解 ASP.NET MVC 中的默认模板。

    【讨论】:

    • 太好了,我将使用 UIHint 属性。非常感谢!
    • 第二个文件名应该是~/Views/Shared/EditorTemplates/Number.cshtmlNumber.cshtml 之前的点必须用斜杠替换。
    • 如果您想进行一些小改动并使用带有视线修改的那些,您能否获得内置编辑器的默认 .cshtml 文件?该链接提供了 .ascx 选项。
    • @Xaxum,是的,您也可以使用 Razor 模板来做到这一点。您所要做的就是将链接文章中显示的代码翻译成 Razor,这是一项微不足道的任务。
    【解决方案2】:

    在您的编辑器模板中,您必须具有相同的类型 示例:

    model.SomeValue 是 loremIpsumObject 的类型

    在您的 EditorTemplate 中,您是:

      @model YourNamespaceWhereIsYourClass.loremIpsumObject
      ...And your code in your editorTemplate....
    

    您可以找到日期时间的示例 here

    对你有帮助吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      相关资源
      最近更新 更多