我已经创建了自定义编辑器模板和显示模板.我已将这些类型中的每一种放在我的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)
谢谢,
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视图模型上属性的文本.
| 归档时间: |
|
| 查看次数: |
3459 次 |
| 最近记录: |