有一個很多很好的職位,並解釋如何實現驗證與ASP.NET MVC的,我比較喜歡其中的一個:
不過,我真的很喜歡通過jquery $ .ajax方法來調用ActionMethods。我想使用$ .ajax的原因之一是因爲通過$ .ajax調用將動態加載到頁面中的許多部分視圖(甚至是實體創建的表單),並且我不能只返回視圖 - 我將失去所有動態加載的內容。
爲了讓您更好地瞭解問題,我將發佈一些簡單的代碼來解釋如何調用控制器操作並處理客戶端,jQuery代碼中的響應。
的控制器ActionMethod:
public ActionResult CreateCustomer(string name, string accountNumber)
{
try
{
CustomerService.InsertCustomer(name, accountNumber);
return Json(new ActionInfo()
{
Success = true,
Message = "Customer Is Successfully Created"
});
}
catch (Exception ex)
{
return Json(new ActionInfo()
{
Success = false,
Message = ex.Message
});
}
}
呼叫和客戶端代碼中處理:
$.ajax({
type: "POST",
url: $form.attr('action'),// /MyController/CreateCustomer
data: $form.serialize(),
error: HandleUnespectedError,
dataType: "json",
success: function(response) {
if (response.Success)
alert("Success: " + response.Message);
else
alert("Error: " + response.Message);
}});
有沒有做一些驗證框架的工作,我需要的方式的好辦法?我知道我可以在ActionInfo中添加驗證錯誤,然後在客戶端處理它,但是我相信這已經是我的一個驗證的構建。
嘿thedude!非常感謝努力:)我完全同意你的綁定客戶實體(想做這樣的,不知道爲什麼,我已經把簡單參數的方法),以及異常處理是肯定的。有了xVal,我可以輕鬆地實現客戶端驗證,如果有人避開它,我會採取行動。但是,我將如何在這種情況下的字段旁邊顯示驗證消息? – 2009-10-15 08:54:34
爲此,您希望從控制器操作中返回部分視圖而不是JSON。在你的部分視圖中,你可以使用Html.ValidationMessage()輔助方法來顯示每個字段的錯誤消息。由您的Data Annotations屬性生成的字段級別的錯誤消息可通過'ModelState'屬性提供給您的控制器。例如,要獲得名爲name的字段的第一個錯誤消息,您將通過「ModelState [」Name「] .Errors [0] .ErrorMessage'獲取它。另外,請看一下'Ajax.BeginForm'方法。過去,我用它取得了巨大的成功。 – 2009-10-15 15:18:45
這就是我意識到,無論我將返回JSON或者部分觀點,那就是我不喜歡的事情......不過,我會看看如何對付它採用MS內置的Ajax特性,儘管我的願望是避免:)謝謝 – 2009-10-16 07:59:43