我有一个带有数据注释的标准 EF 模型。我有两列。第一个是 ID,而另一个是布尔值。在数据库中,两者都不可为空。然而,它们都被标记为“隐藏”属性。这一切都适用于 UI,直到我将表单发布回服务器。
模型无法验证。我尝试了 Steven Sanderson 的建议来创建一个操作过滤器,但是它无法删除我没有返回到服务器进行验证的值。我最终恢复到以下我认为非常难看的内容:
try
{
ModelState["LocationId"].Errors.Clear(); -- Really ugly!
ModelState["IsEnabled"].Errors.Clear(); -- Seems really trashy to do it this way
if (ModelState.IsValid)
{
location.IsEnabled = true; -- This will eventually move to my model definition
_repo.InsertOrUpdate(location);
_repo.Save();
return RedirectToAction("Index");
}
return View();
}
catch (DataException ex)
{
ModelState.AddModelError("dataError", ex);
return View();
}
是否有人对如何清理此问题或创建更好的解决方案有任何其他建议或想法?
谢谢