【发布时间】:2012-04-24 08:54:25
【问题描述】:
我在 ASP.NET MVC3 Razor 中使用“jQuery Validate Unobtrusive”。
我有一个带有“评论”表单的页面,如下所示:
型号
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?
-
@ron.defreitas 哪个控制器方法?
HttpPost方法肯定不相关,因为由于客户端验证阻止了它,所以没有达到这一点?我检查了我的布局文件,包括:jquery-1.5.1.min.js、jquery.validate.min.js和jquery.validate.unobtrusive.js。 -
您能否查看表单的呈现源并确保已将 data-validation 属性添加到文本区域,就像其他字段一样?您是否尝试过单步执行表单的 POST 以查看后端是否认为框中有输入?
标签: jquery asp.net-mvc-3 validation jquery-validate textarea