ASP MVC单选按钮验证

lok*_*oki 6 validation asp.net-mvc

我是mvc的新手,并且有几个关于asp mvc 3验证的问题,关于任何这些问题的帮助都是apreciated:

首先,我有一个模型类,需要一些字段存在,如下所示:

[Required(ErrorMessage = "Required field")]
public UInt16 SomeField { get; set; }
Run Code Online (Sandbox Code Playgroud)

它正在工作,但错误消息是黑色字体(我希望它是红色),我认为验证是在服务器端而不是客户端,我已经阅读了一些关于如何进行javascript验证的教程工作,但它显然不起作用:

Web.config文件

<appSettings>
  <add key="ClientValidationEneabled" value="true" />
  <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)

Index.cshtml

<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>
@{ Html.EnableClientValidation(); }
Run Code Online (Sandbox Code Playgroud)

这将是我的第二个问题,让它在客户端工作.

对于某些具有Required验证器并且具有一组与之关联的单选按钮的字段

模型

[Required(ErrorMessage = "Required field")]
public UInt16 SomeField { get; set; }
Run Code Online (Sandbox Code Playgroud)

视图

@Html.RadioButtonFor(model => model.SomeField, 1) Label
@Html.RadioButtonFor(model => model.SomeField, 2) Label
@Html.ValidationMessageFor(model => model.SomeField)
Run Code Online (Sandbox Code Playgroud)

当您错过单击单选按钮时,验证消息不显示(即使是黑色字体),如何在没有按下按钮时显示它.

ASP MVC 3 Razor引擎

Dar*_*rov 15

Microsoft*.jsASP.NET MVC 3中不推荐使用脚本,不应再使用这些脚本.你可以完全摆脱它们.如果要升级旧应用程序,则仅提供它们以实现向后兼容性.同为代表真正的Html.EnableClientValidation();帮手.它们被jquery.validate插件和不显眼的验证脚本所取代.

而且,由于您在web.config中启用了不显眼的验证,因此在MVC 3应用程序中启用客户端验证所需要的只是包括jquery.validate.jsjquery.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>
Run Code Online (Sandbox Code Playgroud)

关于代码的另一个注意事项是[Required]您应用于非可空类型(ushort)的属性.这没有任何意义,因为非可空类型本质上总是有价值的.Required属性应仅用于可空类型,例如:

[Required(ErrorMessage = "Required field")]
public ushort? SomeField { get; set; }
Run Code Online (Sandbox Code Playgroud)

就验证消息的颜色而言,客户端和服务器端验证都使用相同的HTML结构.因此,设计这些消息的外观和感觉确实是CSS的问题.