我有一个带有注释的基本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; }
我有一个基于这个视图模型的强类型视图。当我在本地运行应用程序时,下面的代码生成"Your Name“标签:
@Html.LabelFor(model => model.YourName)
当应用程序部署在具有.NET 4应用程序池的IIS7上时,标签显示为"YourName“(不带空格)。
这是非常奇怪的,我以前没有遇到过。有谁知道这可能是什么原因吗?
缓存已清除,这已从一系列web客户端进行了测试,结果相同。
编辑:
@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在相同的视图模型中,我具有电子邮件属性:
[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; }
此属性在视图中使用:
<div>
@Html.LabelFor(model => model.FromEmail)
@Html.EditorFor(model => model.FromEmail)
</div>
但它工作得很好:(所以email属性在live和dev环境中都工作得很好。其他属性仅在dev环境中有效。
编辑4删除MaxLength和MinLength注释修复了该问题。不过,我仍然希望使用MaxLength和MinLength注释作为我的模型验证例程的一部分。
[MinLength(3, ErrorMessage = "Minimum 3 Characters")]
[MaxLength(30, ErrorMessage = "Maximum 30 Characters")]
发布于 2011-06-21 21:59:07
MVC3支持StringLength属性,而MinLenght和MaxLength随实体框架一起提供。你可以试试这个而不是MaxLength吗?
[StringLength(120, ErrorMessage = "Must be under 120 characters")]
发布于 2011-06-15 16:57:13
在您的示例中,您的Model具有以下属性。
[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属性。
@Html.LabelFor(model => model.FromName)
@Html.EditorFor(model => model.FromName)
因此,您需要向FromName属性添加类似的属性。
发布于 2011-06-10 22:06:18
我刚接触剃刀,但我还以为DisplayTextFor没有给你标签呢。@Html.LabelFor()
不是更有意义吗?
https://stackoverflow.com/questions/6307233
复制相似问题