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

asp.net-mvc – ASP.NET MVC 5和HTML 5根据W3C规范形成属性

发布时间:2020-12-16 07:29:09 所属栏目:asp.Net 来源:网络整理
导读:至于我知道,似乎Microsoft正在使用jQuery验证属性作为表单输入属性的默认值. 是否可以配置我的应用程序,所以如果我添加Required属性并使用@ Html.EditorFor(x = Model)渲染我的表单,表单将使用必需的属性而不是data-val-required进行渲染?或者我是否被迫为
至于我知道,似乎Microsoft正在使用jQuery验证属性作为表单输入属性的默认值.

是否可以配置我的应用程序,所以如果我添加Required属性并使用@ Html.EditorFor(x => Model)渲染我的表单,表单将使用必需的属性而不是data-val-required进行渲染?或者我是否被迫为所有标准类型编写自己的EditorTemplates?

解决方法

如果要替换ASP.NET MVC使用的标准data- * validation属性,首先应在web.config中禁用不显眼的客户端验证:

<add key="ClientValidationEnabled" value="false" />

这将阻止html助手在输入字段上发出它们.

然后,您可以为标准类型编写自定义编辑器模板.例如,对于?/ Views / Shared / editorTemplates / String.cshtml的字符串:

@{
    var attributes = new Dictionary<string,object>();
    attributes["class"] = "text-box single-line";
    if (ViewData.ModelMetadata.IsRequired)
    {
        attributes["required"] = "required";
    }
}

@Html.TextBox("",ViewData.TemplateInfo.FormattedModelValue,attributes)

这就是它.现在每次你做一个Html.EditorFor(x => x.Foo),其中Foo是一个字符串属性,它将生成以下标记:

<input class="text-box single-line" id="Foo" name="Foo" required="required" type="text" value="" />

还值得一提的是,如果您不想为整个应用程序禁用不显眼的客户端验证和data- *属性,但只能为单个表单执行此操作:

@using (Html.BeginForm())
{
    this.ViewContext.ClientValidationEnabled = false;
    @Html.EditorFor(x => x.Foo)
}

(编辑:李大同)

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

    推荐文章
      热点阅读