当按钮类型为“按钮”而不是提交时,数据注释不起作用

时间:2014-09-10 12:05:48

标签: jquery asp.net-mvc

我已经实现了一个mvc应用程序。我使用了数据注释进行验证。 我的班级是

 public class AdviceCreateVM
      {       
            [Key]
            public int Id { get; set; }

            [Required(ErrorMessage = "Company is required")]
            public int CompanyId { get; set; }
     }

我的观点是

@using (Html.BeginForm("Create", "AdviceCreate", FormMethod.Post, new { enctype = "multipart/form-data", id = "frmCreate"}))

{
    @Html.ValidationSummary(true)

    <div class="row-fluid">
        <div class="span9 roundedDiv" style="margin-left: 10px;">

            <div class=" row-fluid Span12" style="margin-bottom: 15px">
                <div class="span6">
                    <div class="span4">
                        <label>Company</label>
                    </div>
                    <div class="span6">
                        @Html.DropDownListFor(model => model.CompanyId, Model.Companies.Select(company => new SelectListItem { Value = company.Id.ToString(), Text = company.Name }), "--Select Company--")
                        @Html.ValidationMessageFor(model => model.CompanyId)
                    </div>
                </div>
         <input class="btn btn-primary" type="button" value="Create" id="create" />
}

我使用了按钮而没有提交动作,并使用ajax将数据从视图发布到控制器。 jquery代码是,

 var obj =$("#frmCreate").serializeArray(); 
        $.ajax({
            url: '@Url.Action("Create", "AdviceCreate")',
              type: 'POST',                 
              data:obj,                 
              success: function (data) {             
                  window.location.href='@Url.Action("index")';              
                }
          });

我的问题是,当&#34; companyId&#34;为null,如果我单击“创建”按钮,它应显示来自数据注释的消息。但是不显示消息剂量。 任何解决方案?

2 个答案:

答案 0 :(得分:0)

您需要将jquery / javascript事件连接到按钮单击并在窗体上调用validate()方法。

$("#buttonSubmit").click(function(){
     if($("form").validate())
     {
           //Post to server or other stuff, if the validation successful
     }
});

这是一个伪代码,提供一个想法。

答案 1 :(得分:0)

代码看起来很熟悉。在您手动提交表单时,请致电

$("#frmCreate").validate();
if($("#frmCreate").valid())
{

var obj =$("#frmCreate").serializeArray(); 
        $.ajax({
            url: '@Url.Action("Create", "AdviceCreate")',
              type: 'POST',                 
              data:obj,                 
              success: function (data) {             
                  window.location.href='@Url.Action("index")';              
                }
          });

}