我正在使用asp.net mvc4并且有一个表单,我接受来自用户的数据。输入字段,如姓名,地址等。
我希望能够使用正常的mvc验证属性进行验证,但是由于站点根据特定参数而变化,我在配置文件中保存每个属性的正则表达式,该文件在运行时根据用户加载(他们的文化等)。我使用spring.net进行依赖注入。
是否可以在运行时对自定义属性执行依赖项注入,如果是,如何执行?
答案 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应该有类似的东西