Rob*_*nik 10 string html5 editortemplates razor asp.net-mvc-3
我有一个使用Razor视图引擎的MVC 3 Web应用程序.我想扩展默认编辑器模板,所以我想将其他HTML5属性添加到input
元素中autofocus
.
我AdditionalMetadataAttribute
用来指定我的实体上的某些属性是自动聚焦:
public class MyEntity
{
public int Id { get; set; }
[Required]
[AdditionalMetadata("autofocus", true)]
[DataType(DataType.Text)]
public string Name { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
由于视图脚手架使用EditorFor
方法我决定一起玩,并希望覆盖默认的String.cshtml模板,以便它还可以添加任何其他元数据作为属性.玩游戏意味着我不想使用TextBoxFor
我可以控制输入属性的地方.
这是我略微更改的String.cshtml,它将所有其他元数据属性添加为输入HTML属性:
@{
// System.Diagnostics.Debugger.Break();
this.ViewData.ModelMetadata.AdditionalValues.Add("class", "text-box single-line");
}
@Html.TextBox(string.Empty, ViewContext.ViewData.TemplateInfo.FormattedModelValue, this.ViewData.ModelMetadata.AdditionalValues)
Run Code Online (Sandbox Code Playgroud)
此模板应input type=text
使用相同的CSS类进行相同的渲染,但如果提供了任何其他属性,则还应使用其他属性.
然后我把这个文件放在〜/ Views/Shared/EditorTemplates /文件夹中,但似乎这个模板永远不会被拾取,因为我得到的只是默认的输入文本框.
Dar*_*rov 15
您的String.cshtml
编辑器模板永远不会因为以下属性:[DataType(DataType.Text)]
您曾经用过来装饰您的模型属性.
这使用~/Views/Shared/EditorTemplates/Text.cshtml
模板.