ASP MVC单选按钮验证

时间:2012-08-28 18:35:28

标签: asp.net-mvc validation

我是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 剃刀引擎

2 个答案:

答案 0 :(得分:15)

ASP.NET MVC 3中不推荐使用

Microsoft*.js脚本,不应再使用它们。你可以完全摆脱它们。如果要升级旧应用程序,则仅提供它们以实现向后兼容性。 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>

关于代码的另一个注意事项是您应用于非可空类型([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; }

如果您没有选择任何单选按钮,则会返回您的视图并显示验证消息...