典型場景,發佈到檢查ModelState.IsValid並且是否保存到數據庫的操作。驗證規則在模型中設置爲數據註釋。如何最好地使用asp.net MVC 2的數據註釋驗證來處理後期數據驗證?
這是我的問題。我有一個不能超過400個字符的數據字段。數據註釋強制執行此操作,以及客戶端的jQuery驗證。
用戶輸入395個字符,包括幾個換行符。我的應用程序將這些換行符變成<br />
標籤。但那是在UpdateModel()
被調用之後。由於<br />
標記比換行符長,因此它會在UpdateModel上通過驗證,但在實際嘗試保存到數據庫時會失敗。
代碼基本上是這樣的(從NerdDinner範例):
[HttpPost, Authorize]
public ActionResult Edit(int id, FormCollection collection) {
Dinner dinner = dinnerRepository.GetDinner(id);
try {
UpdateModel(dinner, "Dinner");
dinner.Description = dinner.Description.Replace("\n", "<br />");
//... now it's over length limit
dinnerRepository.Save();
return RedirectToAction("Details", new { id=dinner.DinnerID });
}
catch {
return View(dinner);
}
}
當異常被拋出,不填充ModelState中違規從數據註解,所以沒有消息顯示給我的用戶。
什麼是處理這個問題的好方法?
哦,我不知道TryValidateModel,將會給它一個鏡頭。謝謝! – Chaddeus 2010-09-25 14:14:41
TryValidateModel很神奇!喜歡TryUpdateModel和TryValidateModel流程。萬分感謝! – Chaddeus 2010-09-25 14:57:03