使用.net MVC和我在處理表單帖子的Action中進行一些服務器端驗證。服務器端驗證,如何通過錯誤在MVC中查看?
什麼是將錯誤傳遞迴視圖的好方法?
我想創建一個錯誤集合,然後將該集合添加到我的ViewData,然後以某種方式編織一些JavaScript(使用jQuery)來顯示錯誤。
這將是很好的jQuery有一些automagic方式顯示錯誤,因爲這是一種常見的模式。
你是做什麼的?
使用.net MVC和我在處理表單帖子的Action中進行一些服務器端驗證。服務器端驗證,如何通過錯誤在MVC中查看?
什麼是將錯誤傳遞迴視圖的好方法?
我想創建一個錯誤集合,然後將該集合添加到我的ViewData,然後以某種方式編織一些JavaScript(使用jQuery)來顯示錯誤。
這將是很好的jQuery有一些automagic方式顯示錯誤,因爲這是一種常見的模式。
你是做什麼的?
您想要將錯誤添加到ModelState中,如@Mehrdad所示。
...
catch (ArgumentOutOfRangeException e)
{
ModelState.AddModelError(e.ParamName, e.Message);
result = View("New");
}
,包括在ValidationSummary在您查看
<%= Html.ValidationSummary() %>
ViewData.ModelState
旨在將控制器的狀態信息(錯誤)傳遞到視圖。
是的,它是很好的方式,但無論如何,你可以把錯誤信息到自己的計算機[「鑰匙」] =「頁上的錯誤... BLA ... ... BLA BLA ...」
<% if (!string.IsNullOrEmpty(ViewData["key"]+"")) { %>
<div>
Yor customized error template
</div
<% } %>
這是在視圖中進行驗證,這違背了MVC的全部內容。 – 2009-02-09 16:34:12
不太清楚,如果這是你要找的,但是有一個很容易的http://bassistance.de/jquery-plugins/jquery-plugin-validation/使用表單驗證的jQuery插件。它自動以紅色顯示錯誤信息。
當然,你仍然需要做服務器端驗證,並傳回錯誤。 tvanfosson向你展示了他的答案。
我使用內置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。
希望這會有所幫助。
你有這樣的例子嗎? – Funky81 2009-02-26 21:46:52
爲了擴大這個範圍,它還爲使用HtmlHelpers創建的輸入添加了驗證錯誤類,並且您可以使用使用相同ModelState的HtmlHelpers在視圖中的任何位置顯示字段唯一消息。正在開發一個用於統一服務器/客戶端驗證的框架:google xval。 – anonymous 2009-01-28 21:33:35