我是mvc的新手,并且有几个关于asp mvc 3验证的问题,关于任何这些问题的帮助会有所帮助:
首先,我有一个模型类,需要一些字段存在,如下所示:
[Required(ErrorMessage = "Required field")]
public UInt16 SomeField { get; set; }
它正在工作,但错误消息是黑色字体(我希望它是红色),我认为验证是在服务器端而不是在客户端上,我已经阅读了一些有关如何使用的教程使javascript验证工作,但它显然不起作用:
的Web.config
<appSettings>
<add key="ClientValidationEneabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
Index.cshtml
<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>
@{ Html.EnableClientValidation(); }
这将是我的第二个问题,让它在客户端工作。
对于某些具有Required
验证器并且有一组与之关联的单选按钮的字段
模型
[Required(ErrorMessage = "Required field")]
public UInt16 SomeField { get; set; }
视图
@Html.RadioButtonFor(model => model.SomeField, 1) Label
@Html.RadioButtonFor(model => model.SomeField, 2) Label
@Html.ValidationMessageFor(model => model.SomeField)
当您错过单击单选按钮时,验证消息未显示(即使是黑色字体),如何在没有按下按钮时显示验证消息。
ASP MVC 3 剃刀引擎
答案 0 :(得分:15)
Microsoft*.js
脚本,不应再使用它们。你可以完全摆脱它们。如果要升级旧应用程序,则仅提供它们以实现向后兼容性。 Html.EnableClientValidation();
助手也是如此。它们被jquery.validate
插件和不显眼的验证脚本取代。
由于您已在web.config中启用了不显眼的验证,因此在MVC 3应用程序中启用客户端验证所需的只是包括jquery.validate.js
和jquery.validate.unobtrusive.js
脚本,以及您正在使用的jquery
版本,因为这些脚本都依赖于它。
<script type="text/javascript" src="@Url.Content("~/scripts/jquery-1.5.1.js")"></script>
<script type="text/javascript" src="@Url.Content("~/scripts/jquery.validate.js")"></script>
<script type="text/javascript" src="@Url.Content("~/scripts/jquery.validate.unobtrusive.js")"></script>
关于代码的另一个注意事项是您应用于非可空类型([Required]
)的ushort
属性。这没有任何意义,因为非可空类型本质上总是有价值的。 Required属性应仅用于可空类型,例如:
[Required(ErrorMessage = "Required field")]
public ushort? SomeField { get; set; }
就验证消息的颜色而言,客户端和服务器端验证都使用相同的HTML结构。因此,设计这些消息的外观和感觉确实是一个问题。
答案 1 :(得分:1)
声明这样的模型..使用Nullable&lt;&gt;
converge_by
所以当你提交表单而没有检查任何单选按钮时,在写这个代码后会出现空值
[Required(ErrorMessage = "Required field")]
public Nullable<UInt16> SomeField { get; set; }
如果您没有选择任何单选按钮,则会返回您的视图并显示验证消息...