我安装我的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;
        }
    }
}

不能完全确定这是做的最好的事情,但它似乎工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top