典型场景,发布到检查模型状态.IsValid如果是,保存到数据库。验证规则设置为模型中的数据注释。
这是我的问题。我的数据字段不能超过400个字符。数据注释实现了这一点,并在客户端执行jQuery验证。
用户输入395个字符,包括一些换行符。我的应用程序,把那些新词变成
<br />
标签。但那是在
UpdateModel()
被称为。自从
<
标记比换行符长,它在UpdateModel上通过验证,但在实际尝试保存到DB时失败。
基本上是这样的代码(来自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规则冲突,因此不会向我的用户显示任何消息。
处理这个问题的好方法是什么?