我在ASP.NET MVC3 Razor中使用“jQuery Validate Unobtrusive”。jQuery验证Unobtrusive不适用于TextArea
我有一个网页一个 “备注” 形式,像这样:
型号
public class CommentModel
{
[Required]
public string Name { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[DataType(DataType.Url)]
[Display(Name = "Website URL")]
public string WebsiteUrl { get; set; }
[Required]
public string Message { get; set; }
}
查看
@using (Html.BeginForm("AddComment", "Blog", new { @articleID = article.ID }))
{
<p>
@Html.LabelFor(m => m.commentModel.Name)
@Html.TextBoxFor(m => m.commentModel.Name)
@Html.ValidationMessageFor(m => m.commentModel.Name)
</p>
<p>
@Html.LabelFor(m => m.commentModel.Email)
@Html.TextBoxFor(m => m.commentModel.Email)
@Html.ValidationMessageFor(m => m.commentModel.Email)
</p>
<p>
@Html.LabelFor(m => m.commentModel.WebsiteUrl)
@Html.TextBoxFor(m => m.commentModel.WebsiteUrl)
@Html.ValidationMessageFor(m => m.commentModel.WebsiteUrl)
</p>
<p>
@Html.LabelFor(m => m.commentModel.Message)
@Html.TextAreaFor(m => m.commentModel.Message)
@Html.ValidationMessageFor(m => m.commentModel.Message)
</p>
<p>
<input type="submit" value="Submit Comment" />
</p>
}
然而,当表单提交,只有Name
和Email
返回验证错误,当Message
太:
如果我改变Message
从TextAreaFor
到TextBoxFor
,然后验证正常工作。
为什么会这样,我如何才能使验证工作在我的文本框上?
也可能值得注意的是我没有必要为这个表单写任何特定的jQuery。我跟着一个教程解释这不是必需的,因为它全部由MVC3处理。
你可以包含你的控制器代码吗? 此外,您是否在布局或视图中同时包含jquery.validate和jquery.validate.unobtrusive? – 2012-04-24 16:38:28
@ ron.defreitas哪种控制器方法?当然'HttpPost'方法不相关,因为客户端验证阻止了这个方法,所以没有达到。我检查了我的布局文件,包括:'jquery-1.5.1.min.js','jquery.validate.min.js'&'jquery.validate.unobtrusive.js'。 – Curt 2012-04-24 20:21:46
您可以查看表单的呈现源并确保数据验证属性已添加到文本区域中,如同其他字段一样吗?您是否尝试通过表单的POST来查看后端是否认为框中有输入内容? – 2012-04-26 07:44:47