依赖注入到MVC属性中

本文关键字:属性 MVC 注入 依赖 | 更新日期: 2023-09-27 18:12:58

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

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

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

依赖注入到MVC属性中

属性方法中的值仅限于常量值。例如字符串、数字和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)
    {
        ...
    }
}

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

是的,依赖项也可以在运行时注入。在Castle Windsor DI中,你可以为依赖项指定生活方式,比如"Transient"——我很确定spring.net

应该有类似的设置。