我对ASP.NET MVC3客户端验证有一个奇怪的问题.我有以下课程:
public class Instrument : BaseObject
{
    public int Id { get; set; }
    [Required(ErrorMessage = "Name is required.")]
    [MaxLength(40, ErrorMessage = "Name cannot be longer than 40 characters.")]
    public string Name { get; set; }
}
从我的观点来看:
<div class="editor-field">
    @Html.EditorFor(model => model.Name)
    @Html.ValidationMessageFor(model => model.Name)
</div>
这是我为此字段的文本框获取的生成的HTML:
<input class="text-box single-line" data-val="true" data-val-required="Name is required." id="Name" name="Name" type="text" value="">
没有迹象MaxLengthAttribute,但其他一切似乎都在起作用.
有什么想法会出错吗?
我在我的模式中有这个:
[Required(AllowEmptyStrings = false, ErrorMessageResourceType = typeof(Registration), ErrorMessageResourceName = "NameRequired")]
[MinLength(3, ErrorMessageResourceType = typeof(Registration), ErrorMessageResourceName = "NameTooShort")]
public String Name { get; set; }
最终结果如下:
    <div class="editor-label">
        <label for="Name">Name</label>
    </div>
    <div class="editor-field">
        <input class="text-box single-line" data-val="true" data-val-required="Name is required" id="Name" name="Name" type="text" value="" />
        <span class="field-validation-valid" data-valmsg-for="Name" data-valmsg-replace="true"></span>
    </div>
为什么MinLength会被编译器忽略?我怎么能"开启"?
通常为ASP.NET MVC 3 Membership生成的代码,特别是NewPassword类的属性ChangePasswordModel看起来大致如下:
    [Required]
    [StringLength(100, MinimumLength=6)]
    [DataType(DataType.Password)]
    [Display("Name = CurrentPassword")]
    public string NewPassword { get; set; }
为了用我正在使用的外部参数填充一些信息RecourceType:
(在这种情况下,我正在更改OldPassword并Display使用资源中的一些其他数据填充属性
    [Required]
    [DataType(DataType.Password)]
    [Display(ResourceType = typeof(Account), Name = "ChangePasswordCurrent")]
    public string OldPassword { get; set; }
回到NewPassword.我怎么能代替MinimumLenght用Membership.MinRequiredPasswordLength?:我的尝试:
    [Required]
    [StringLength(100, MinimumLength=Membership.MinRequiredPasswordLength)] 
    [DataType(DataType.Password)]
    [Display(ResourceType=typeof(Account), Name= "ChangePasswordNew")]
    public string NewPassword { get; set; }
这会产生错误:
属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式(http://msdn.microsoft.com/de-de/library/09ze6t76%28v=vs.90%29.aspx)