2011-11-23 28 views
5

Tôi cần trợ giúp để hiển thị một mô hình phức tạp.MVC3 - mô hình phức tạp, các thuộc tính có cùng tên trường, không thể hiển thị mô hình

Tôi có một mô hình phức tạp với 2 thuộc tính lớp học. Tất cả 3 lớp (AddProjectQnrModel, ProjectModel, QTModel) đều có các thuộc tính GroupId và GroupName.

public class AddProjectQnrModel 
    { 
     [Required] 
     public int GroupId { get; set; } 

     public string GroupName { get; set; } 

     public ProjectModel Project { get; set; } 

     public QCTModel QCT { get; set; } 
    } 

Trong giao diện Tôi đang sử dụng các mẫu biên tập:

@Html.EditorFor(x => x.Project, "_EditProject.cshtml") 
@Html.EditorFor(x => x.QCT, "_QCT-v1.cshtml") 

tôi không thể sử dụng @ html.Partial vì nó sẽ không ràng buộc các thuộc tính một cách chính xác, vì vậy tôi phải sử dụng các mẫu biên tập.

On chạy dự án tôi nhận được lỗi này:

Validation type names in unobtrusive client validation rules must be unique. The following validation type was seen more than once: required

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: Validation type names in unobtrusive client validation rules must be unique. The following validation type was seen more than once: required

Source Error: 

Line 26: 
Line 27:   @Html.EditorFor(x => x.Project, "_EditProject.cshtml") 
Line 28: 
Line 29:   

Trả lời

6

Tôi nghĩ rằng bạn đã chạy vào một cái gì đó tương tự như this issue.

MVC sẽ tự động thêm Xác thực bắt buộc cho GroupIdint không phải là loại vô hiệu. Khi bạn thêm thông số kỹ thuật rõ ràng của [Required], quá trình xác thực trùng lặp và dẫn đến lỗi của bạn. Xóa thuộc tính rõ ràng [Required] cho bất kỳ thuộc tính nào vốn không rỗng và mọi thứ sẽ hoạt động như bạn mong đợi.

Ngoài ra, nếu bạn muốn ngăn chặn thế hệ tự động có lợi cho [Required] tờ khai rõ ràng, bạn có thể thêm dòng sau vào Application_Start như đã thấy trên này previous answer:

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false 
Các vấn đề liên quan