2010-05-23 98 views
2

我試圖在通過$ .get呈現的部分視圖中使用MVC2客戶端驗證。但是,客戶端驗證不起作用。我不太清楚交易是什麼。當從ajax調用獲取表單時,MVC2客戶端驗證不起作用

[Required(ErrorMessage = "Email is required")] 
public string Email { get; set; } 

<% using (Ajax.BeginForm(new AjaxOptions { Confirm = "You sure?" })) { %> 
<%: Html.TextBoxFor(m => m.Email, new { @class = "TextBox150" })%> 
<%= Html.ValidationMessageFor(m => m.Email)%> 
<input type="submit" value="Add/Save" style="float: right;" /> 
<% } %> 

我沒有做任何特別的渲染局部視圖。只需將html放入div並在模式彈出窗口中顯示即可。

在附註中,有沒有人知道是否可以在沒有提交按鈕的情況下提交帶有客戶端驗證的表單?

回答

1

MVC2客戶端驗證依賴於一些額外的JavaScript呈現在頁面上,該頁面對來自模型的驗證規則進行編碼。我認爲你可以從局部視圖中得到這個,儘管我還沒有嘗試過,只要你在開始表單之前在你的局部視圖中包含了EnableClientValidation調用。確保你擁有包含在主視圖中的MVC客戶端JavaScript。

<% Html.EnableClientValidation(); %> 
<% using (Ajax.BeginForm(new AjaxOptions { Confirm = "You sure?" })) { %> 
<%: Html.TextBoxFor(m => m.Email, new { @class = "TextBox150" })%> 
<%= Html.ValidationMessageFor(m => m.Email)%> 
<input type="submit" value="Add/Save" style="float: right;" /> 
<% } %> 

我通常結合使用MVC2基於模型的驗證使用所述MVC/jQuery的膠水的javascript從MVCFutures代碼jQuery驗證插件。我知道這可以在表單提交上工作,不管提交是通過提交按鈕還是javascript觸發的。我所有的「按鈕」實際上都是通過JavaScript觸發表單提交的鏈接,它對我很有用。我認爲這是標準的MVC驗證腳本,但沒有使用它們。

+0

抱歉,我忘了將它包含在代碼片段中。我確實在我的ajax.begin表單上方有以下內容: <%Html.EnableClientValidation(); %> <%Html.ValidationSummary(); %> – devlife 2010-05-23 14:36:04

+0

@devlife - 我剛剛注意到它是通過AJAX提交的。我不知道在通過AJAX提交表單時是否觸發驗證邏輯 - 因爲提交事件被AJAX腳本中止,因此它可以異步執行。您可能需要在OnBegin方法中手動觸發驗證。現在是時候使用JavaScript的調試版本來啓動Firebug,並且看看實際執行的是什麼,我想。 – tvanfosson 2010-05-23 14:55:42

+0

如果你不想插入一個表單到頁面中,只需輸入幾個元素,這是如何工作的? – 2011-01-16 23:29:15