该文章特定于使用MicrosoftAjax的MVC 2。 MVC 4不再包含MS Ajax文件,因为它们已被弃用,首选的方法是使用jQuery。
要验证设置,确保这些脚本是在你的布局
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
而这两个设置存在于appSettings部分在web.config文件
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
所以,当你添加数据注释到您的ViewModels您可以获得客户端和服务器端验证两者
public class MyModel
{
[Required]
[StringLength(30)]
public string FirstName { get; set; }
[Required]
[StringLength(30)]
public string LastName { get; set; }
}
在你看来只是确保你有一个像这样
<div>
@Html.LabelFor(model => model.FirstName)
</div>
<div>
@Html.TextBoxFor(model => model.FirstName) <br/>
@Html.ValidationMessageFor(model => model.FirstName)
</div>
<div>
@Html.LabelFor(model => model.LastName)
</div>
<div>
@Html.TextBoxFor(model => model.LastName) <br/>
@Html.ValidationMessageFor(model => model.LastName)
</div>
更新
下面的代码是,我已经叫RateRequiredIfCustomIndexRate 一个自定义验证的例子这是它的JavaScript端,使其被添加到jquery验证
$("document").ready(function() {
var isCustomRateRequired = document.getElementById("IsCustomRateRequired");
isCustomRateRequired.onchange = function() {
if (this.checked) {
$('#Rate').attr('disabled', 'disabled');
$('#Rate').val('');
}
else {
$('#Rate').removeAttr('disabled');
}
};
});
jQuery.validator.addMethod("raterequiredifcustomindexrate", function (value, element, param) {
var rateRequired = $("#CustomRateRequired").val();
if (rateRequired && value == "") {
return false;
}
return true;
});
jQuery.validator.unobtrusive.adapters.addBool("raterequiredifcustomindexrate");
谷歌“MVC 3自定义验证”,你会发现像http://msdn.microsoft.com/en-us/vs2010trainingcourse_aspnetmvccustomvalidation_topic3和http://tdryan.blogspot.com/2010/12/aspnet- mvc-3-custom-validation.html – RickAndMSFT
@RickAndMSFT:当你在没有阅读的问题上盲目地发布链接时,会发生这种情况。 http://msdn.microsoft.com/en-us/vs2010trainingcourse_aspnetmvccustomvalidation_topic3不是关于Jquery验证。它使用MicrosoftMvcValidation.js进行客户端验证,我不需要,因为我明确提出了问题,并且http://tdryan.blogspot.in/2010/12/aspnet-mvc-3-custom-validation.html使用内置RegularExpressionAttribute自动生成客户端脚本。我没有使用RegularExpressionAttribute。根据你的链接,我最好不要谷歌:D –
阅读任何我的教程下面的回应。为MVC 4更新它们并不难。概念是相同的。 – RickAndMSFT