依赖注入mvc属性

时间:2013-05-08 23:55:18

标签: c# asp.net-mvc asp.net-mvc-4 dependency-injection spring.net

我正在使用asp.net mvc4并且有一个表单,我接受来自用户的数据。输入字段,如姓名,地址等。

我希望能够使用正常的mvc验证属性进行验证,但是由于站点根据特定参数而变化,我在配置文件中保存每个属性的正则表达式,该文件在运行时根据用户加载(他们的文化等)。我使用spring.net进行依赖注入。

是否可以在运行时对自定义属性执行依赖项注入,如果是,如何执行?

2 个答案:

答案 0 :(得分:2)

属性方法中的值仅限于常量值。例如字符串,数字和typeof

你可以做的是从RegularExpressionAttribute派生一个新属性,它将在构造函数中找到一个用于查找正则表达式的键。

[MyRegularExpression("Field1")]
public string Field1 { get; set; }

属性:

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
public class MyRegularExpressionAttribute : RegularExpressionAttribute
{
    public MyRegularExpressionAttribute(string key)
        : base(FindRegex(key))
    { }

    private static string FindRegex(string key)
    {
        ...
    }
}

答案 1 :(得分:0)

您可以通过从ValidationAttribute扩展来创建自定义属性,并将数据存储依赖项传递给构造函数。现在将此属性应用于模型的属性,并将其注册到DI容器中。

是的,依赖项也可以在运行时注入。在Castle Windsor DI中,你可以为依赖项指定LifeStyles,例如'Transient' - 我很确定spring.net应该有类似的东西