2011-11-23 16 views
5

Potrzebuję pomocy w renderowaniu złożonego modelu.MVC3 - złożony model, właściwości mają tę samą nazwę pola, nie można renderować modelu

Mam złożony model z 2 właściwościami klasy. Wszystkie 3 klasy (AddProjectQnrModel, ProjectModel, QTModel) mają właściwości GroupId i 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; } 
    } 

W widoku używam szablonów edytora:

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

nie mogę użyć @ html.Partial gdyż nie zwiąże właściwości poprawnie, więc muszę używać szablonów edytora.

Na prowadzenie projektu otrzymuję ten błąd:

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:   

Odpowiedz

6

myślę, że napotkasz coś podobnego do this issue.

MVC automatycznie doda wymaganej walidacji GroupId ponieważ int nie jest pustych typ. Po dodaniu jawnej specyfikacji [Required] walidacja zostanie zduplikowana i spowoduje błąd. Usuń jawny atrybut [Required] dla wszystkich właściwości, które z natury nie podlegają zerowaniu, i wszystko powinno działać zgodnie z oczekiwaniami.

Ewentualnie, jeśli chcesz, aby zapobiec automatycznej generacji na rzecz wyraźnych [Required] deklaracji, można dodać następujące Application_Start jak widać na tym previous answer:

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false 
Powiązane problemy