MVC3显示模板

Jef*_*ddy 7 asp.net-mvc-3

我已经创建了自定义编辑器模板和显示模板.我已将这些类型中的每一种放在我的views文件夹中的一个文件夹中.这些文件夹被命名为EditorTemplate或DisplayTemplate,具体取决于创建的模板类型.

所以,现在我可以使用EditorFor来使用我的自定义编辑器模板,或者使用DisplayFor作为我的自定义编辑器模板.

我想为LabelFor创建一个自定义模板,但我还没有找到这样的例子.我会在我的Views文件夹中创建一个名为Labeltemplate的文件夹并在此处添加吗?

UPDATE

我试图扩展LabelFor的原因是处理KeyValuePair类型的Property.我想使用此属性的Key作为Label,将值作为Display.我在这里问了一个关于DisplayFor来处理Value的问题.

我的解决方案最终成为>

   @Html.DisplayFor(m => m.MyProperty, @Model.MyProperty.Key)
Run Code Online (Sandbox Code Playgroud)

谢谢,

Dar*_*rov 6

LabelFor不使用任何模板.它在MVC源代码中是硬编码的,<label>无论你做什么,它都会吐出来.

如果要修改此行为,则必须编写自定义html帮助程序.

另一方面,如果要使用模板,则必须使用EditorFor/DisplayFor帮助程序.因此,由于标签用于显示目的,您可以使用显示模板而不是Html.LabelFor(x => x.Foo)使用Html.DisplayFor(x => x.Foo).就自定义模板而言,要么Foo使用[UIHint]属性修饰属性,要么将其作为第二个参数传递给DisplayFor帮助程序.


更新:

根据您的评论,您不是要尝试修改标记,而只修改值.这就是LabelFor助手的第二个参数可以用于:

@Html.LabelFor(x => x.Foo, Model.Key)
@Html.EditorFor(x => x.Foo)
Run Code Online (Sandbox Code Playgroud)

这将创建一个与Foo输入相关联for的标签(正确分配的标签的属性),但显示的文本是Key视图模型上属性的文本.