ASP.NET MVC 2 RTM包含哪个版本的DataAnnotations

时间:2010-05-13 20:47:50

标签: c# visual-studio-2008 asp.net-mvc-2 data-annotations

我正在使用Visual Studio 2008开发一个项目,并已从MVC 2 Preview迁移到RTM版本。我们想使用模型验证,例如:

public class ViewModel 
{
    [Required(ErrorMessage="UserName is required.")]
    [StringLength(10, ErrorMessage="UserName cannot be greater than 10 chars.")]
    public string UserName { get; set; }
}

[HttpPost]
public ActionResult Register(ViewModel model)
{
    if (ModelState.IsValid){} // Always true
}

但是,ModelState.IsValid始终返回true。我怀疑它可能与我们引用的System.ComponentModel.DataAnnotations.dll版本有关,目前版本为99.0.0.0,这看起来很奇怪。

有谁知道Visual Studio 2008的MVC 2 RTM包含此dll的哪个版本?

2 个答案:

答案 0 :(得分:0)

我认为System.ComponentModel.DataAnnotations不附带MVC,它是核心.NET框架的一部分。

您应该参考的dll文件可以在以下任一位置找到:

.NET 3.5:

C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v3.5\Profile\Server Core\System.ComponentModel.DataAnnotations.dll

.NET 4:

C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.ComponentModel.DataAnnotations.dll

至少那是他们在我的电脑上的地方!

HTHS,
查尔斯

聚苯乙烯。如果您运行的是64位版本的Windows,则目录将以C:\Program Files (x86)

开头

答案 1 :(得分:0)

原来,System.ComponentModel.DataAnnotations.dll版本99.0.0.0似乎来自MVC的'Futures'版本。我们使用过它,以便我们可以使用Validator类。

一旦我用标准GAC版本替换了引用,它就可以了。我认为我所看到的是期货的输入验证,我期待的是Brad Wilson所记录的晚期变化使其进入RTM。

感谢您的帮助Charles