【发布时间】:2012-08-09 09:18:31
【问题描述】:
我正在使用 VAB 来验证一些具有属性的类,并且我正在使用元数据类在不同的类之间共享相同的验证。
当我尝试验证控制器中的对象时(顺便说一句,我使用的是 asp.net mvc)ValidationResults 没有错误,我的实体应该无效。
但是,ASP.NET MVC 发挥了他的作用,因为 ModelState.IsValid 是错误的。我想问题在于我进行手动验证的方式。
在 Global.asax 中,我正在加载类和元数据类之间的关联。
全球.ASAX
private static void RegisterMetadataExtensions()
{
AssociatedMetadataTypeTypeDescriptionProvider typeDescriptionProvider;
typeDescriptionProvider =
new AssociatedMetadataTypeTypeDescriptionProvider(
typeof(FooViewModel), typeof(FooMetadata));
TypeDescriptor.AddProviderTransparent(typeDescriptionProvider,
typeof(FooViewModel));
typeDescriptionProvider =
new AssociatedMetadataTypeTypeDescriptionProvider(
typeof(FooCommand), typeof(FooMetadata));
TypeDescriptor.AddProviderTransparent(
typeDescriptionProvider, typeof(FooCommand));
}
控制器
[HttpPost]
public ActionResult Action(FooViewModel vm)
{
Validator<FooViewModel> validator =
ValidationFactory.CreateValidator<FooViewModel>();
ValidationResults res = validator.Validate(vm);
//res.Count is 0
或
ValidationResults res = Validation.Validate<FooViewModel>(vm);
//res.Count is 0
//ModelState.IsValid is false
if(ModelState.IsValid)
欢迎提出任何想法。
提前致谢。
【问题讨论】:
标签: asp.net-mvc enterprise-library modelmetadata validation-application-bl metadatatype