温莎城堡和流利的验证作为一个MVC验证
-
26-09-2019 - |
题
我安装我的MVC项目使用流利的验证和温莎城堡和一切工作奇妙。我使用的是自定义的验证器厂考虑到,我也用实体框架和必须考虑的动态代理是那些获得缠着我的POCO类。这是我的CastleWindsorValidatorFactory:
public override IValidator CreateInstance( Type validatorType)
{
if( validatorType.GetGenericArguments()[0].Namespace.Contains( "DynamicProxies" ) )
{
validatorType = Type.GetType( String.Format( "{0}.{1}[[{2}]], {3}", validatorType.Namespace, validatorType.Name, validatorType.GetGenericArguments()[0].BaseType.AssemblyQualifiedName, validatorType.Assembly.FullName ) );
}
return ResolveType.Of( validatorType ) as IValidator;
}
一切当一个验证存在用于模型的是,控制器动作模型绑定运作良好。如果没有验证存在特定的模型,然后我得到一个错误,温莎无法解析式。
不过,并不是所有的车型需要一个验证。我可以写一个空的,但是这仅仅是无用的代码。如果我只是赶上了错误并忽略它,当我试图解决一个验证?是不是有什么建成城堡,这将帮助我?我应该怎么办?
解决方案
我最终什么了这个做是为了赶上我的ValidatorFactory内ComponentNotFoundException并返回NULL这样的:
public class CastleWindsorValidatorFactory : ValidatorFactoryBase
{
public override IValidator CreateInstance( Type validatorType)
{
if( validatorType.GetGenericArguments()[0].Namespace.Contains( "DynamicProxies" ) )
{
validatorType = Type.GetType( String.Format( "{0}.{1}[[{2}]], {3}", validatorType.Namespace, validatorType.Name, validatorType.GetGenericArguments()[0].BaseType.AssemblyQualifiedName, validatorType.Assembly.FullName ) );
}
try
{
return ResolveType.Of( validatorType ) as IValidator;
}
catch( ComponentNotFoundException )
{
return null;
}
}
}
不能完全确定这是做的最好的事情,但它似乎工作。
不隶属于 StackOverflow