首先,我是相当新的MVC,但有一个现有的项目在MVC3和四处寻找MVC4,所以这两个版本的答案赞赏。MVC非常量的属性参数与会员资格属性同步
在我的MVC视图我有这样一行:
Passwords must be at least @Membership.MinRequiredPasswordLength characters long.
,并在型号我有这样的:
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
(对于MVC模板项目产生这些都是自动)
我的web.config MembershipProvider具有此属性:
minRequiredPasswordLength="8"
这样做的问题是,用户将被告知最小长度为8,但实际验证将为6. 当然,我可以将两者设置为相同的值,但我想知道是否有简单的方法只能使用其中的一个或同时使用两者。
我已经试过这样:
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = Membership.MinRequiredPasswordLength)]
,但得到的错误“的属性参数必须是常量表达式,......”
我知道写自定义验证属性的选项但我想避免这一点,因为我基本上会写验证逻辑,已经存在(除了值的来源)
或者,我可以显示模型的最小亮度在视图中是什么?
我怎样才能只有一个地方做出改变?
是的,我确实遇到过这个选项,但是我会编写自定义验证器来实现已经存在的相同验证逻辑(值的来源除外)。如果可能的话,我宁愿避免这种情况,但是谢谢你的建议。 – PostureOfLearning 2012-07-19 00:46:45
你的答案可能不是我所希望的,但它似乎是我需要做的,所以我将它标记为答案。我会给你评分上的+1,但我还没有要求15分。 – PostureOfLearning 2012-07-23 23:22:23
我得到了足够的积分给你+1 ...;)谢谢 – PostureOfLearning 2012-08-01 23:16:38