我使用自定義資源提供程序從數據庫獲取資源字符串。這適用於ASP.NET,我可以將資源類型定義爲字符串。 MVC 3中模型屬性的元數據屬性(如[Range],[Display],[Required])要求Resource的類型作爲參數,其中ResourceType是.resx文件生成的代碼隱藏類的類型。ASP.NET MVC 3本地化DisplayAttribute和自定義資源提供程序
[Display(Name = "Phone", ResourceType = typeof(MyResources))]
public string Phone { get; set; }
因爲我沒有.resx文件,這樣一類不存在。我如何使用該模型用自定義資源提供者的屬性?
我想有這樣的事情:
[Display(Name = "Telefon", ResourceTypeName = "MyResources")]
public string Phone { get; set; }
System.ComponentModel中的DisplayNameAttribute有一個可覆蓋的DisplayName屬性用於此目的,但DisplayAttribute類是密封的。對於驗證屬性,不存在相應的類。
不幸的是,這不起作用,因爲DisplayAttribute是一個密封的類。即使我爲屬性執行我自己的實現,我也必須覆蓋Html擴展方法(例如Html.LabelFor)。 – slfan 2011-03-09 13:36:58
我做了進一步的調查:我可以派生自DisplayNameAttribute具有可重寫的屬性DisplayName。最後,我使用T4模板來生成Resources類,因爲我不必實現所有數據註釋屬性。 – slfan 2011-03-10 15:15:10