IIS无法识别视图模型注释

16 c# asp.net data-annotations asp.net-mvc-3

我有一个带注释的基本MVC视图模型,例如:

    [Required(ErrorMessage="Your Name Required")]
    [Display(Name = "Your Name")]
    [DataType(DataType.Text)]
    [MaxLength(120, ErrorMessage = "Must be under 120 characters")]                
    public String  YourName { get; set; }
Run Code Online (Sandbox Code Playgroud)

我有一个基于此视图模型的强类型视图.当我在本地运行应用程序时,以下代码生成"您的名称"标签:

@Html.LabelFor(model => model.YourName)
Run Code Online (Sandbox Code Playgroud)

当应用程序部署在带有.NET 4应用程序池的IIS7上时,标签显示"YourName"(没有空格).

这非常古怪,我以前没遇到过这个.有没有人知道可能导致这种情况的原因是什么?

清除缓存,已经从一系列Web客户端测试,结果是相同的.

编辑:

@model MVC.Web.Models.ContactUsModel

<div>
    @Html.LabelFor(model => model.YourName)
    @Html.EditorFor(model => model.YourName)       
</div>
Run Code Online (Sandbox Code Playgroud)

编辑2 正在忽略该字段上的所有注释.还有其他文本类型字段,它们具有相同的问题.这只发生在实时服务器上.实时服务器是IIS 7,已在Plesk 10.2上配置.想知道这是不是因为我使用的是MVC 3 RTM.

编辑3 在同一视图模型中,我有Email属性:

    [Required(ErrorMessage = "Your Email Is Required")]
    [Display(Name = "Your Email")]
    [RegularExpression(@"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$", ErrorMessage = "Your Email Is Invalid")]
    [DataType(DataType.Text)]
    public String FromEmail { get; set; }
Run Code Online (Sandbox Code Playgroud)

在视图中使用此属性:

    <div>
        @Html.LabelFor(model => model.FromEmail)    
        @Html.EditorFor(model => model.FromEmail)        
    </div>
Run Code Online (Sandbox Code Playgroud)

但它完全正常:(因此,电子邮件属性在live和dev环境中都能正常工作.其他属性只能在dev环境中工作.

编辑4 删除MaxLength和MinLength注释解决了问题.我仍然希望使用MaxLength和MinLength注释作为我的模型验证例程的一部分.

[MinLength(3, ErrorMessage = "Minimum 3 Characters")]
[MaxLength(30, ErrorMessage = "Maximum 30 Characters")]
Run Code Online (Sandbox Code Playgroud)

Tz_*_*Tz_ 1

MVC3 支持 [StringLength] 属性,而 [MinLenght] 和 [MaxLength] 是实体框架附带的。你能尝试这个而不是 MaxLength 吗?

[StringLength(120, ErrorMessage = "Must be under 120 characters")]  
Run Code Online (Sandbox Code Playgroud)