我正在使用实体框架和数据库第一种方法。
我已经为验证创建了单独的类。
[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- *属性。
请指导我做错了什么。
感谢名单。
答案 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)
我发现问题所在,我的验证类的命名空间与存在数据实体的命名空间不同。