MVC5不显眼的验证不起作用

时间:2018-05-27 18:44:55

标签: asp.net-mvc-5 entity-framework-6 unobtrusive-validation

我正在使用实体框架和数据库第一种方法。

我已经为验证创建了单独的类。

[MetadataType(typeof(RoleMetaData))]
    public partial class Role
    {

    }

    class RoleMetaData
    {
        [Required(ErrorMessage = "Please enter role name")]
        public string Name { get; set; }
    }

和我的html表单:

@using (Html.BeginForm("Create", "Role", FormMethod.Post, new {  @class = "submitform" }))
{
 @Html.TextBoxFor(x => x.Name, new { @class="form-control" })
<input type="submit" class="btn btn-success width-150" value="Save" />
}

但html渲染到浏览器时没有任何data- *属性,如:

<input class="form-control" id="Name" name="Name"  type="text" value="">

我想知道它为什么不渲染data- *属性。

请指导我做错了什么。

感谢名单。

2 个答案:

答案 0 :(得分:0)

您需要使用ValidationMessageFor来渲染data- *属性以进行不显眼的验证。使用ValidationMessageFor如下所示:

 @using (Html.BeginForm("Create", "Role", FormMethod.Post, new {  @class = "submitform" }))
    {
     @Html.TextBoxFor(x => x.Name, new { @class="form-control" })
     @Html.ValidationMessageFor(x => x.Name, "", new { @class = "text-danger" })
    <input type="submit" class="btn btn-success width-150" value="Save" />
    }

并确保在web.config中启用了客户端验证,如下所示:

<configuration>
  <appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
</configuration>

答案 1 :(得分:0)

我发现问题所在,我的验证类的命名空间与存在数据实体的命名空间不同。