2011-11-23 18 views
5

Karmaşık bir model oluştururken yardıma ihtiyacım var. MVC3 - Karmaşık model, özellikler aynı alan adı var, model oluşturamıyor

I2 sınıf özellikleri olan bir kompleks bir model vardır. Tüm 3 sınıfları (AddProjectQnrModel, ProjectModel, QTModel) GroupId ve GroupName özelliklerine sahiptir. Doğru özelliklere bağlamak olmaz olarak

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

Ben @ html.Partial kullanamaz, bu yüzden editör şablonlar kullanmak zorunda: görünümünde

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

     public string GroupName { get; set; } 

     public ProjectModel Project { get; set; } 

     public QCTModel QCT { get; set; } 
    } 

ben editör şablonları kullanıyorum.

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:   

cevap

6

Sana this issue benzer bir şey haline koşuyoruz düşünüyorum: Proje çalışmıyor Açık

bu hatayı alıyorum. int boş olabilen tip olmadığından

MVC otomatik GroupId için gerekli doğrulama ekleyecektir. [Required] açık belirtimi eklediğinizde, doğrulama yinelenir ve hatayla sonuçlanır. Doğası gereği null olmayan ve beklediğiniz gibi çalışacak tüm özellikler için [Required] özniteliğini kaldırın.

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false 
: Eğer açık [Required] bildirimleri lehine otomatik nesil
engellemek istiyorsanız bu previous answer görüldüğü gibi

Alternatif olarak, Application_Start aşağıdaki ekleyebilir