我在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