我键入了这样的代码,以帮助验证我在C#MVC 4中的视图,并且它有效:
jQuery代码:
$("#CountryDDL").change(function () {
if ($("#CountryDDL").val() == 'CA' || $("#CountryDDL").val() == 'US') {
$("#submitButton").attr("onclick", "return false;");
}
else if ($("#CountryDDL").val() != 'CA' || $("#CountryDDL").val() != 'US') {
$("#submitButton").removeAttr("onclick");
}
});
$("#ProvinceDDL, #StateDDL").change(function () {
if ($("#ProvinceDDL").val() != 'NULL' || $("#StateDDL").val() != 'NULL') {
$("#submitButton").removeAttr("onclick");
}
else if ($("#ProvinceDDL").val() == 'NULL' || $("#StateDDL").val() == 'NULL') {
$("#submitButton").attr("onclick", "return false;");
}
});
jQuery做什么:
这个jQuery最终有助于验证两个领域(技术上有三个)。如果用户选择加拿大或美国,则他们被迫选择省或州,否则他们无法提交。
问题:
但是,由于我有onclick返回false,因此不允许其他字段的验证在此页面上进行。
有没有办法让C#运行其他字段的验证并在点击的同时运行我的jQuery验证?
答案 0 :(得分:0)
我使用万无一失。见Conditional Validation in asp.net MVC4
然后在jquery中你可以做
$('.btnSubmit').on('click', function(e){
if($('form').valid()){
}else{
e.preventDefault();
var $validate = $('form').validate();
}
});
因此它将触发验证,如果表单无效,则阻止默认将停止提交发生。希望这有助于
答案 1 :(得分:0)
警告您只实施客户端验证,我希望您有相应的服务器端验证。
解决问题的正确方法是为服务器端和客户端提供MVC验证器,以便您可以为模型添加注释。下面是一个示例,在模型中添加验证器将与不引人注目的MVC验证正确配合,您将不会使用硬编码值编写javascript。有许多验证工具可以帮助您,例如[必填]和谷歌其他人。
示例代码取自另一个链接以帮助您。
http://www.asp.net/mvc/tutorials/hands-on-labs/aspnet-mvc-4-helpers,-forms-and-validation
public class Album
{
[Required(ErrorMessage = "An Album Title is required")]
[DisplayFormat(ConvertEmptyStringToNull = false)]
[StringLength(160, MinimumLength = 2)]
public string Title { get; set; }
[Required(ErrorMessage = "Price is required")]
[Range(0.01, 100.00, ErrorMessage = "Price must be between 0.01 and 100.00")]
[DataType(DataType.Currency)]
public decimal Price { get; set; }
[DisplayName("Album Art URL")]
[DataType(DataType.ImageUrl)]
[StringLength(1024)]
public string AlbumArtUrl { get; set; }
}