2010-08-30 114 views
0

在對重複問題進行投票或關閉之前,我想明確說明我已閱讀本網站和其他人的舊帖子。問題是他們舊的(至少有一些),並沒有給出真正的好例子。使用Ajax窗體和ASP.Net處理服務器端驗證MVC

我目前使用ASP.Net MVC 2.0與Ajax.BeginFormjQuery Validation客戶端驗證,它們都工作得很好。但是我想要將服務器端驗證錯誤顯示爲客戶端錯誤(不一定是遠程)。服務器端錯誤當前適用於ModelState.AddModelError

我用的延伸是這樣的代碼:

<% Html.EnableClientValidation(); %> 

using (Ajax.BeginForm("Bar", new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "result"})) { %> 
<fieldset> 
    <p> 
     <%: Html.TextAreaFor(model => model.Foo) %> 
     <%: Html.ValidationMessageFor(model => model.Foo) %> 
    </p> 
    <p> 
     <input type="submit"/> 
    </p> 
</fieldset> 

而且,正如我所說,我設定的誤差與ModelState.AddModelError。目前,我返回一個關於錯誤的驗證摘要(它不會綁定到導致它們的元素),否則返回我的結果。

到現在爲止,我所遇到的多種解決方案,這一問題:

  • XVAL(支持遠程服務器驗證)
  • RenderPartialid='result'將整個表格。
  • 返回一些JSON使用結果和錯誤的消息

但有實在不是一個更好的解決方案(也許在ASP.Net MVC 3.0)? xVal仍然是一個很好的解決方案(不是很多開發正在進行)?

如果我使用JSON解決方案,是否有jQuery方法將錯誤分配給模擬100%客戶端驗證的特定元素?

如果有更好的解決方案,我準備切換我使用的技術。

謝謝,Lasse Espeholt

+0

自MVC 2發佈以來,我不認爲客戶端驗證發生了任何「新」事件,因此我不確定您尋找哪種新信息。 – jfar 2010-08-30 14:10:06

+0

@jfar xVal是爲1.0製作的,但這仍然是一個不錯的選擇?我看到它的最新更新是1年前。我正在尋求推薦我應該使用哪種解決方案(或其他解決方案)。 – 2010-08-30 14:29:43

回答

2

xVal很好!我用它與2個asp.net mvc 2項目,它奇妙地工作。

+0

如果沒有啓用javascript,它可以回退嗎?而且,我需要檢查字段是否需要進行一些計算。據我瞭解,它會在實際進行表單提交調用之前探測一些服務器端驗證,這是正確的嗎?那麼是否可以緩存驗證時計算出的結果,以便在調用實際提交時使用它? – 2010-08-30 14:48:29

+0

xVal確實支持需要到服務器進行檢查的驗證。查看遠程驗證功能。不確定緩存。 – Patricia 2010-08-30 15:17:08

相關問題