0

我正在使用asp.net mvc4,並有一個表單,我接受用戶的數據。輸入字段如名稱,地址等依賴注入到mvc屬性

我希望能夠驗證這種與正常的mvc驗證屬性,但由於網站根據某些參數的不同,我舉行每個屬性的配置文件中的每個屬性的正則表達式基於用戶(他們的文化等)在運行時加載。我正在使用spring.net進行依賴注入。

是否有可能在運行時執行依賴注入到自定義屬性,如果是這樣,如何?

回答

0

您可以通過擴展ValidationAttribute來創建自定義屬性,並將數據存儲區依賴項傳遞給構造函數。現在將此屬性應用於您的模型的屬性,並將其註冊到您的DI容器中。

是的,依賴關係也可以在運行時注入。在Castle Windsor DI中,你可以指定LifeStyles作爲'Transient'之類的依賴關係 - 我很確定spring.net應該有類似的東西。

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) 
    { 
     ... 
    } 
}