首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >IIS不识别视图模型批注

IIS不识别视图模型批注
EN

Stack Overflow用户
提问于 2011-06-10 21:46:53
回答 6查看 831关注 0票数 16

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

代码语言:javascript
复制
    [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; }

我有一个基于这个视图模型的强类型视图。当我在本地运行应用程序时,下面的代码生成"Your Name“标签:

代码语言:javascript
复制
@Html.LabelFor(model => model.YourName)

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

这是非常奇怪的,我以前没有遇到过。有谁知道这可能是什么原因吗?

缓存已清除,这已从一系列web客户端进行了测试,结果相同。

编辑:

代码语言:javascript
复制
@model MVC.Web.Models.ContactUsModel

<div>
    @Html.LabelFor(model => model.YourName)
    @Html.EditorFor(model => model.YourName)       
</div>

编辑2该字段上的所有注释都将被忽略。还有其他文本类型字段,它们也有同样的问题。这只发生在实时服务器上。实时服务器是在Plesk 10.2上配置的IIS 7。不知道这是不是一个bug,因为我使用的是MVC3RTM。

编辑3在相同的视图模型中,我具有电子邮件属性:

代码语言:javascript
复制
    [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; }

此属性在视图中使用:

代码语言:javascript
复制
    <div>
        @Html.LabelFor(model => model.FromEmail)    
        @Html.EditorFor(model => model.FromEmail)        
    </div>

但它工作得很好:(所以email属性在live和dev环境中都工作得很好。其他属性仅在dev环境中有效。

编辑4删除MaxLength和MinLength注释修复了该问题。不过,我仍然希望使用MaxLength和MinLength注释作为我的模型验证例程的一部分。

代码语言:javascript
复制
[MinLength(3, ErrorMessage = "Minimum 3 Characters")]
[MaxLength(30, ErrorMessage = "Maximum 30 Characters")]
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-06-21 21:59:07

MVC3支持StringLength属性,而MinLenght和MaxLength随实体框架一起提供。你可以试试这个而不是MaxLength吗?

代码语言:javascript
复制
[StringLength(120, ErrorMessage = "Must be under 120 characters")]  
票数 1
EN

Stack Overflow用户

发布于 2011-06-15 16:57:13

在您的示例中,您的Model具有以下属性。

代码语言:javascript
复制
[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; }

因此,属性"YourName“的标签应该是"Your Name”。

但是,在您的视图中,您并没有显示YourName属性。

代码语言:javascript
复制
@Html.LabelFor(model => model.FromName)
@Html.EditorFor(model => model.FromName)  

因此,您需要向FromName属性添加类似的属性。

票数 2
EN

Stack Overflow用户

发布于 2011-06-10 22:06:18

我刚接触剃刀,但我还以为DisplayTextFor没有给你标签呢。@Html.LabelFor()不是更有意义吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6307233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档