asp.net-mvc-5 - MVC5 不显眼的验证不起作用
问题描述
我正在使用具有数据库优先方法的实体框架。
我为验证创建了单独的类。
[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" />
}
但是没有任何 data-* 属性的 html 渲染到浏览器,例如:
<input class="form-control" id="Name" name="Name" type="text" value="">
我想知道为什么它不呈现 data-* 属性。
请指导我做错了什么。
谢谢。
解决方案
您需要使用 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>
推荐阅读
- node.js - Firebase Cloud Function 未设置新文档
- java - 在设备公共外部存储上存储图像时出错
- string - 我如何在 go to typemap 中使用 map[string][string] 来映射
在 C++ 中? - safari - 如何在 Safari 浏览器中保存从网络摄像头录制的视频流?
- javascript - 如何在 JavaScript 中显示结果后更改变量的字体颜色?
- docker - 使用多个 docker-compose 文件覆盖图像标签
- php - Cron 事件正在消失,或无法在 WordPress 中更新
- keras - 如何在损失函数keras中使用输入层
- laravel - 我想通过在同一页面中使用另一个下拉列表将数据获取到下拉列表
- r - 交互数百个变量