加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

字符串 – 自定义Asp.net MVC 3编辑器模板没有被使用

发布时间:2020-12-15 19:43:31 所属栏目:asp.Net 来源:网络整理
导读:我有一个使用Razor视图引擎的MVC 3 Web应用程序.我想扩展默认编辑器模板,所以我想添加额外的 HTML5属性到输入元素,如自动对焦. 我正在使用AdditionalMetadataAttribute来指定我的实体的某些属性为自动对焦: public class MyEntity{ public int Id { get; se
我有一个使用Razor视图引擎的MVC 3 Web应用程序.我想扩展默认编辑器模板,所以我想添加额外的 HTML5属性到输入元素,如自动对焦.

我正在使用AdditionalMetadataAttribute来指定我的实体的某些属性为自动对焦:

public class MyEntity
{
    public int Id { get; set; }

    [Required]
    [AdditionalMetadata("autofocus",true)]
    [DataType(DataType.Text)]
    public string Name { get; set; }

    ...
}

因为视图脚手架使用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)

该模板应该使用相同的CSS类,使用相同的输入类型=文本,但是如果提供了其中任何一个属性,也可以使用其他属性.

然后我把这个文件放在?/ Views / Shared / EditorTemplates /文件夹中,但是似乎这个模板从来没有被拿起来,因为我得到的只是默认的输入文本框.

我究竟做错了什么?

解决方法

您的String.cshtml编辑器模板永远不会因为以下属性:[DataType(DataType.Text)]您用来装饰您的模型属性.

这使用?/ Views / Shared / EditorTemplates / Text.cshtml模板.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读