2014-10-26 89 views
0

提交我的形式非常簡單:MVC Html.BeginForm不是JQuery的

<div id="FormDiv"> 

    @using (Html.BeginForm("MyAction", "MyController", null, FormMethod.Post, new { id = "MyForm", @class = "form-horizontal", role = "form" })) 
    { 
     @Html.AntiForgeryToken(); 

     <div class="col-sm-6"> 
      @Html.DropDownListFor(m => m.PropertyA, Model.A_Items, "--- Select A ---", new { @class = "form-control" }) 
     </div> 

     <div class="col-sm-6"> 
      @Html.DropDownListFor(m => m.PropertyB, Model.B_Items, "--- Select B ---", new { @class = "form-control" }) 
     </div> 

    } 

</div> 

和JQuery的JavaScript在下拉種選擇改變提交形式:

$("#PropertyA").change(function() { 
    $(this).parents("form").submit(); 
}); 

$("#PropertyB").change(function() { 
    $(this).parents("form").submit(); 
}); 

,但形式不提交!

雖然,當我從視圖中刪除下拉列表中的一個或更改任何下拉列表的值,然後更改另一個值,表格被懷疑提交! 這是一種錯誤還是如何提交該表單?

+1

驗證可能會觸發,兩個下拉列表都有效嗎? – 2014-10-26 14:18:43

+0

哦,簡單,因爲它完全忘了不引人注目的驗證。 @EhsanSajjad使它成爲答案,所以我可以接受。 – Arvis 2014-10-26 14:43:31

回答

1

機會是因爲您的視圖是強類型的,它會觸發模型驗證,確保所有字段都是填充並使用@Html.ValidationMessageFor(x=>x.Property),以便您可以在屏幕上看到哪個元素正在進行驗證。

<div class="col-sm-6"> 
    @Html.DropDownListFor(m => m.PropertyA, Model.A_Items, "--- Select A ---", new { @class = "form-control" }) 
    @Html.ValidationMessageFor(m => x.PropertyA) 
</div>