我正在使用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的哪个版本?
答案 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