1

我使用ASP.NET MVC 4.0和我遇到了JQuery的不顯眼的驗證一個奇怪的行爲。奇怪的行爲在ASP.NET MVC 4.0

我已經把它的相關的腳本到我layout.cshtml,當我打開視圖並點擊提交按鈕後,驗證消息來了,並突然服務器調用被擊中。即調試器進入POST事件的服務器代碼。

所以基本上,這兩個東西都發生在這裏。客戶端驗證以及服務器端事件。

我可以看到的消息發射了尚未執行似乎繼續並轉到服務器端。

這是我的看法代碼:

@using (Html.BeginForm("AddUser", "Registration", FormMethod.Post, new { enctype = "multipart/form-data", id = "frm1" })) 
     { 
      //some HTML markup 
      . 
      . 
      . 
      <div class="col-md-1 divside-left-first"> 
       <button type="submit" value="Save" id="Btnsave" class="btn ui-state-default medium">&nbsp;Submit&nbsp;</button> 
      </div> 
     } 

我已經把下面的腳本到layout.cshtml文件底部和他們在瀏覽器上正確顯示。我檢查了。

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.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> 

除此之外,我還沒有使用任何其他腳本,除了原生JQuery.js腳本。

事情我已經嘗試:

  • 把腳本頂部部分。沒有工作。
  • 將按鈕類型從按鈕更改爲輸入。沒有工作。
  • 嘗試將腳本放入剖視圖而不是layout.cshtml。沒有工作。

任何幫助或建議我在做什麼錯在這裏或沒有得到將不勝感激。

+0

無關,但你並不需要'jQuery的。unobtrusive-ajax'(僅適用於'Ajax()'助手) –

+0

@StephenMuecke - 好吧,讓我現在刪除它並檢查並取回。 –

+0

jQuery.js在哪裏?它是否被加載?這可能會有所幫助:http://stackoverflow.com/questions/16136900/mvc-4-validation-firing-but-the-form-is-still-submitting。另外,在控制器的「AddUser」操作中是否有ModelState.IsValid的服務器端代碼?這可能有所幫助:http://stackoverflow.com/questions/18436284/jquery-post-still-goes-through-inspite-of-asp-net-mvc-4-validation-failure – Mortalus

回答

0

經過近一天的努力,我終於碰巧找到了這個的解決方案,在我的案例。它可以是任何一個別的東西,但對我來說這似乎工作:

問題與我正在使用jQuery版本和不引人注目的驗證JS。他們似乎一起進行得並不順利,每當發生POST事件時,我都會在瀏覽器控制檯中觀察到一個錯誤,指出「Unexpected token u」

因此,當深入探索這個錯誤時,我開始知道這兩個JS文件之間存在某種衝突,並且您需要使用一個額外的JS文件,以幫助消除差異並使它們完美協作。該文件是:

jquery.migrate

你只需要添加這個JS在你的代碼文件引用,並確保所有其他的JS文件是在正確的位置,然後運行代碼。這之後它按預期工作。

希望這會有所幫助。