2012-04-24 30 views
5

Tôi đang sử dụng "jQuery Validate Unobtrusive" với ASP.NET MVC3 Razor.jQuery Validate Unobtrusive không hoạt động đối với TextArea

Tôi có một trang với một "Ý kiến" hình thức, như thế này:

Mẫu

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; } 

} 

Xem

@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> 
    } 

Tuy nhiên, khi các mẫu được gửi, chỉ NameEmail trả lại lỗi xác thực khi Message nên quá:

enter image description here

Nếu tôi thay đổi MessageTextAreaFor-TextBoxFor, sau đó xác nhận hoạt động chính xác.

Tại sao điều này và làm cách nào để xác thực hoạt động trên hộp văn bản của tôi?


Cũng cần lưu ý là tôi không phải viết bất kỳ jQuery cụ thể nào cho biểu mẫu này. Tôi đã làm theo một hướng dẫn mà giải thích điều này là không cần thiết như tất cả của nó xử lý bởi MVC3.

+0

Bạn có thể bao gồm mã Bộ điều khiển của mình không? Ngoài ra, bạn có bao gồm cả jquery.validate và jquery.validate.unobtrusive trong bố cục hoặc chế độ xem của mình không? –

+0

@ ron.defreitas Phương pháp điều khiển nào? Chắc chắn phương thức 'HttpPost' sẽ không có liên quan bởi vì điều này không đạt được vì việc xác thực phía máy khách đang ngăn cản nó? Tôi đã kiểm tra tệp Layout của mình, tôi đã bao gồm: 'jquery-1.5.1.min.js',' jquery.validate.min.js' & 'jquery.validate.unobtrusive.js'. – Curt

+0

Bạn có thể xem nguồn được hiển thị của biểu mẫu và đảm bảo rằng thuộc tính xác thực dữ liệu đã được thêm vào vùng văn bản như phần còn lại của các trường không? Bạn đã thử bước qua POST của biểu mẫu của bạn để xem phụ trợ cho rằng có đầu vào trong hộp không? –

Trả lời

10

Trang trí thuộc tính mô hình tương ứng với [DataType(DataType.MultilineText)] chú thích dữ liệu và sử dụng Html.EditorFor Phương thức trình trợ giúp.

[Required] 
[DataType(DataType.MultilineText)] 
public string Message { get; set; } 

Bây giờ sử dụng @Html.EditorFor Helper phương pháp

@Html.EditorFor(m => m.RoleDescription) 
1

Đó là lỗi với TextAreaFor khi mô hình được lồng vào nhau. Đặt nội dung của CommentModel của bạn vào mô hình "root" để nói và mọi thứ hoạt động tốt. Hoặc, thay đổi TextAreaFor thành TextBoxFor và nó hoạt động tuyệt vời!

Về một chủ đề không liên quan, tôi cảm thấy được xác nhận rằng tôi không phải là người duy nhất cố gắng và lồng mẫu bình luận của tôi giống như bạn. Điều này thực sự cần được sửa!

Edit: Đây là vé lỗi cho vấn đề này:

http://aspnet.codeplex.com/workitem/8576

Edit2: workaround của việc sử dụng EditorFor Shyju của hoạt động! Thật thú vị, nó cũng bổ sung thêm một số tên lớp bổ sung cho đầu ra của, vì vậy hãy cẩn thận chúng không xung đột với CSS của bạn.

0

Câu trả lời từ @Shyju dường như làm việc một cách hoàn hảo, nhưng tôi đã có thêm một cái gì đó bổ sung cho các tập tin Site.css để làm cho nó làm việc:

Áp dụng giải pháp @Shyju và Thêm css cho văn bản:

textarea.input-validation-error { 
    border: 1px solid #e80c4d; 
} 

Bây giờ nó hoạt động hoàn hảo.

Các vấn đề liên quan