2009-01-28 41 views
4

使用.net MVC和我在處理表單帖子的Action中進行一些服務器端驗證。服務器端驗證,如何通過錯誤在MVC中查看?

什麼是將錯誤傳遞迴視圖的好方法?

我想創建一個錯誤集合,然後將該集合添加到我的ViewData,然後以某種方式編織一些JavaScript(使用jQuery)來顯示錯誤。

這將是很好的jQuery有一些automagic方式顯示錯誤,因爲這是一種常見的模式。

你是做什麼的?

回答

8

您想要將錯誤添加到ModelState中,如@Mehrdad所示。

... 
catch (ArgumentOutOfRangeException e) 
{ 
    ModelState.AddModelError(e.ParamName, e.Message); 

    result = View("New"); 
} 

,包括在ValidationSummary在您查看

<%= Html.ValidationSummary() %> 
+0

爲了擴大這個範圍,它還爲使用HtmlHelpers創建的輸入添加了驗證錯誤類,並且您可以使用使用相同ModelState的HtmlHelpers在視圖中的任何位置顯示字段唯一消息。正在開發一個用於統一服務器/客戶端驗證的框架:google xval。 – anonymous 2009-01-28 21:33:35

1

ViewData.ModelState旨在將控制器的狀態信息(錯誤)傳遞到視圖。

-1

是的,它是很好的方式,但無論如何,你可以把錯誤信息到自己的計算機[「鑰匙」] =「頁上的錯誤... BLA ... ... BLA BLA ...」

<% if (!string.IsNullOrEmpty(ViewData["key"]+"")) { %> 

<div> 
Yor customized error template 
</div 

<% } %> 
+0

這是在視圖中進行驗證,這違背了MVC的全部內容。 – 2009-02-09 16:34:12

0

我使用內置ModelState對象持有我的驗證錯誤。通過手動添加如下錯誤來進行綁定或手動驗證:

ModelState.AddModelError("LastName","Last name can't be Doe")

爲了支持AJAX形式後的情況下,我已作出擴展方法的ModelStateDictionary,GetErrors(),一個返回光ModelStateErrorsDTO對象(適合JSON序列的ModelState中的驗證錯誤的扁平版本)。

當表單發佈是ajax請求時,我會返回一個json序列化的ModelStateErrorsDTO

在jQuery方面,我寫了一個幫助函數,它使用默認的mvc css類,即input-validation-error,將驗證錯誤放置在相關輸入域的旁邊。

通過這種方式,您將能夠使用驗證消息製作不顯眼的ajaxforms。

希望這會有所幫助。

+0

你有這樣的例子嗎? – Funky81 2009-02-26 21:46:52