【发布时间】:2011-09-23 17:06:43
【问题描述】:
我在我的 ASP.NET MVC 3 项目中使用数据注释来验证模型。这些非常方便,但目前它们对我来说很神奇。我读到数据注释确实 not 抛出异常。那么 MVC 是如何知道将验证错误添加到模型状态字典的呢?如果没有抛出异常,由于模型验证而无法在模型上设置属性如何冒泡到 MVC?我一直认为每次属性失败时都会引发异常,并且 MVC 模型绑定会捕获异常并将其添加到模型状态字典中。
为了测试这一点,我创建了一个控制台应用程序并添加了一个带有验证注释的示例类:
public class MyObject
{
[StringLength(10, MinimumLength=3)]
public string Name { get; set; }
}
然后我实例化了该对象并尝试将小于 3 的值分配给 Name 属性。尽管注释说不允许小于 3 的字符串长度,但该属性分配得很好。
static void Main(string[] args)
{
MyObject mine = new MyObject();
mine.Name = "hi";
Console.WriteLine(mine.Name);
Console.ReadLine();
}
这个小程序向控制台写出“hi”。为什么?当试图将mine.Name 设置为“hi”时,我预计它会生气。
我错过了什么?
提前致谢。
【问题讨论】:
标签: c# asp.net-mvc validation asp.net-mvc-3 data-annotations