我有一个使用从数据库生成的实体的 ASP.NET MVC3 应用程序。每个实体也有一个单独的部分类,它使用MetadataType属性将每个实体与一个装饰有许多验证属性的类相关联(见下文)。
[MetadataType(typeof(Drawing.Metadata))]
public partial class Drawing
{
private sealed class Metadata
{
[Required]
[StringLength(50, MinimumLength = 3, ErrorMessage = "Drawing numbers must be between {2} and {1} characters in length.")]
[DisplayName("Drawing number")]
public string Number { get; set; }
[Required]
[StringLength(255, MinimumLength = 3, ErrorMessage = "Drawing titles must be between {2} and {1} characters in length.")]
public string Title { get; set; }
}
}
我的控制器代码如下所示:
[HttpPost]
public ActionResult Create(Drawing drawing)
{
if (ModelState.IsValid)
{
// Save to database here...
return RedirectToAction("Index");
}
else
{
return View(drawing);
}
}
我已使用 Visual Studio 模板创建视图以添加、编辑和删除实体(设计器代码未更改)。
我遇到的问题是,当我创建实体时,只有在启用客户端验证时验证才有效。如果我关闭客户端验证,那么ModelState.IsValid似乎总是返回 true 并将我返回到索引页面。
任何人都可以就如何使用实体框架实体进行服务器端验证提供任何建议吗?
更新:
这个问题好像和我的一样。这篇文章的作者似乎已经解决了这个问题,但没有提及他们是如何解决这个问题的……