我遵循了以下教程:
http://www.asp.net/learn/mvc/tutorial-39-cs.aspx http://schotime.net/blog/index.php/2009/03/31/integrating-xval-validation-with-linq-to-sql/
为了使用Data Annotation为LINQ-To-SQL生成的类强制执行数据验证。元数据类如下所示:
[MetadataType(typeof(PositionValidation))]
public partial class Position
{
}
public class PositionValidation
{
[Required]
public string Title { get; set; }
}
验证工作正常,但前提是我在控制器中执行此操作:
if (ModelState.IsValid)
{
_positions.AddPosition(newPosition);
return RedirectToAction("List");
}
如果我省略了对有效ModelState的检查,它将尝试将其添加到数据库中,即使Title为空。结果,我得到一个空白标题的条目(这也适用于编辑)。
除了控制器/视图之外,我还认为数据验证也会为模型方强制执行。这是否意味着我必须在Position类中添加额外的代码来进行验证?如果是这样,这不会违反DRY吗?
答案 0 :(得分:0)
换句话说(如果我错了,请告诉我),如果数据注释验证失败,您预计您的操作根本不会被执行。这是省略if(Model.IsValid)语句的唯一方法。
您的假设不正确,这是设计的。事实上,这是一个非常好的功能,而不是一个麻烦。您只添加一行代码,以检查是否有错误,作为回报,您可以: