0

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

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

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

4

2 回答 2

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)
    {
        ...
    }
}
于 2013-05-09T00:25:57.873 回答
0

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

是的,依赖项也可以在运行时注入。在 Castle Windsor DI 中,您可以为诸如“瞬态”之类的依赖项指定 LifeStyles - 我很确定 spring.net 应该有类似的东西

于 2013-05-09T00:18:12.803 回答