[英]dependency injection in to mvc attributes
我正在使用asp.net mvc4,並有一個表單,我接受用戶的數據。 輸入字段,如姓名,地址等。
我希望能夠使用正常的mvc驗證屬性進行驗證,但是由於站點根據特定參數而變化,我在配置文件中保存每個屬性的正則表達式,該文件在運行時根據用戶(他們的文化等)加載。 我使用spring.net進行依賴注入。
是否可以在運行時對自定義屬性執行依賴項注入,如果是,如何執行?
屬性方法中的值僅限於常量值。 如字符串,數字和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中,您可以為依賴項指定LifeStyles,例如'Transient' - 我很確定spring.net應該有類似的東西
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.