用jQuery进行验证的MVC4剃须刀

时间:2014-03-14 15:05:32

标签: c# javascript jquery asp.net-mvc asp.net-mvc-4

我键入了这样的代码,以帮助验证我在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验证?

2 个答案:

答案 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

http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-validation-to-the-model

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; }
     }