2011-10-04 127 views
1

我有頁面形式:MVC3客戶端驗證:如何防止頁面重新加載?

@using (Html.BeginForm("Create", "Theme", FormMethod.Post, new { id = "frm_post", enctype = "multipart/form-data" })) 
    {  
     @Html.ValidationSummary(true) 
     @Html.TextBoxFor(model => model.Name) 
     @Html.ValidationMessageFor(m => m.Name) 
     <input type="image" src="img.png" 
onclick="javascript:if(func()){document.getElementById('frm_post').submit();}else{return false;}"/> 
    } 

我包括腳本頁面:

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

我在web.config中這樣的字符串:

<appSettings> 
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
</appSettings> 

我有[必填]爲模型中的名稱。

但是,當我離開文本框名稱爲空並提交表單時,錯誤消息顯示幾秒鐘,然後頁面重新加載。我怎樣才能停止重新加載頁面?

+1

爲什麼需要在提交按鈕上執行onclick事件,在該按鈕中手動強制在表單上提交?對我沒有意義。這正是不引人注目的驗證已經爲你做的。 –

+0

是的...這是錯誤的。我應該從我的按鈕的onclick事件中移除form.submit()。所以,如果我使用 '', 它工作正常。 – greatromul

+0

這個onclick處理程序有什麼意義?你爲什麼需要它? –

回答

1

O-o-ops ...我只是應該從我的按鈕的onclick事件中刪除form.submit()。 所以,如果我用

<input type="image" src="img.png" 
onclick="javascript:if(!func()){return false;}"/> 

它工作正常。

1

它看起來像你可能想要刪除該內聯onclick處理程序,並考慮編寫一個自定義驗證程序。這個http://blogs.msdn.com/b/stuartleeks/archive/2011/01/25/asp-net-mvc-3-integrating-with-the-jquery-ui-date-picker-and-adding-a-jquery-validate-date-range-validator.aspx是一個很好的例子,說明如何使用不顯眼的驗證在MVC3中編寫一個。這是一個自定義日期選擇器,但同樣的原則可以應用於您的自定義驗證。