2011-05-02 61 views
0

如何將成員資格提供程序(取自web.config)的值傳遞給默認MVC 3項目中的AccountModels中的驗證屬性?從web.config中和Register.cshtml圖中所得到StringLength屬性,客戶端驗證和成員資格提供程序

Membership.MinRequiredPasswordLength 

返回值使用它:

<p> 
Passwords are required to be a minimum of @Membership.MinRequiredPasswordLength 
characters in length. 
</p> 

但似乎在視圖模型文件AccountModels已在值硬編碼:

[Required] 
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] 
[DataType(DataType.Password)] 
[Display(Name = "New password")] 
public string NewPassword { get; set; } 

那麼如何將web.config中的值傳遞給MinimumLength參數?

回答

3

您將無法動態指定屬性屬性。這就是爲什麼模板具有硬編碼的原因。仍然使用數據註釋的解決方法是讓您的視圖模型實現IValidatableObject並讓它根據Membership.MinRequiredPasswordLength檢查密碼。另一種選擇是創建一個從ValidationAttribute繼承的屬性並檢查Membership.MinRequiredPasswordLength。

大衛·海登有post covering both of these options.

對於客戶端,你將需要實現對模型或自定義屬性IClientValidatable。這是另一個answer,顯示了一個例子。您還需要添加客戶端驗證功能,並且您可以在Razor視圖中使用@ Membership.MinRequiredPasswordLength來提取值。

+0

謝謝。這將處理我假設的服務器端驗證。它不會生成具有不引人注目的客戶端驗證屬性的標籤,是不是? – LukeP 2011-05-02 19:05:40

+0

更新了包含客戶端信息的答案。 – bkaid 2011-05-02 21:04:38

+0

謝謝。這正是我所期待的。 (好吧,除了能夠動態分配屬性屬性外) – LukeP 2011-05-02 21:10:13

相關問題