2017-08-24 1 views
0

Je crée une application mvc 4 et je suis coincé dans un problème étrange. Je reçois l'erreur suivante à plusieurs reprises après un certain temps.System.MissingMethodException: Aucun constructeur sans paramètre défini pour cet objet dans mvc4

2017-08-23 17: 18: 19,985 [7] ERREUR - System.MissingMethodException: Aucun constructeur sans paramètre défini pour cet objet. à System.RuntimeTypeHandle.CreateInstance (type RuntimeType, Boolean publicOnly, Boolean nocheck, Boolean & canBeCached, RuntimeMethodHandleInternal & cteur, Boolean & bNeedSecurityCheck) à System.RuntimeType.CreateInstanceSlow (Boolean publicOnly, Boolean skipCheckThis, Boolean FillCache, StackCrawlMark & stackMark) à System.Activator.CreateInstance (type de type, booléen non publique) à System.Activator.CreateInstance (type Type) à System.Web.Mvc.DefaultModelBinder.BindComplexModel (ControllerContext ControllerContext, ModelBindingContext BindingContext) à System.Web.Mvc .ControllerActionInvoker.GetParameterValue (ControllerContext controllerContext, ParameterDescriptor parameterDescriptor) à System.Web.Mvc.ControllerActionInvoker.GetParameterValues ​​(ControllerContext controllerContext, ActionDescriptor actionDescriptor) à System.Web.Mvc.Async.AsyncControllerActionInvoker. <> c__DisplayClass25.b__1e (AsyncCallback AsyncCallback, Object AsyncState)

J'utilise les types nullables ainsi que SelectList dans mes classes de modèle. J'ai un constructeur par défaut dans toutes les classes du modèle. Exemple de ma classe de modèle est comme ceci:

public class BiddingFirstStepModel 
{ 
    //--------------------------Default Constructor-------- 

    public BiddingFirstStepModel() { } 

    //----------------------------------------------------- 

    public string jobname { get; set; } 
    public string jobtype { get; set; } 
    public int jobtypeid { get; set; } 
    public string jobreference { get; set; } 
    public string customername { get; set; } 
    public int? quantity { get; set; } 
    public string department { get; set; } 
    public int? departmentid { get; set; } 
    public string description { get; set; } 
    public DateTime? EndDate { get; set; } 
    public string customerid { get; set; } 
    public string rfqno { get; set; } 
    public string productpartname { get; set; } 
    public string productpartcode { get; set; } 
    public string designlocation { get; set; } 
    public DateTime? sopdate { get; set; } 
    public int? lifecycle { get; set; } 
    public string productapplication { get; set; } 
    public string enduser { get; set; } 
    public bool loa { get; set; } 
    public string JobOrderType { get; set; } 
    public string SeriesJobRefrence { get; set; } 

    //--------NPI------------ 
    public string producthead { get; set; } 
    public Int64? expectedincreasequantity { get; set; } 
    public DateTime? initialsamples { get; set; } 
    public Int64? tentativequantity { get; set; } 
    public DateTime? ppap { get; set; } 
    public string manufacturinglocation { get; set; } 
    public string supplier { get; set; } 

    //------------Customer Return------------------ 

    public Int64 quantitysupplied { get; set; } 
    public string dmaicno { get; set; } 

    //--------------------------------------------- 

    public HttpPostedFileBase excelbom { get; set; } 

    public JobDTO jobdata = new JobDTO(); 
    public SelectList DepartmentList { get; set; } 
    public SelectList JobTypeList { get; set; } 
    public SelectList CustomersList { get; set; } 
    public SelectList JobReferenceList { get; set; } 
    public SelectList JobList { get; set; } 
    public bool isedit = false; 

    public bool IsRevise = false; 

    public CustomersDTO[] CustomerData { get; set; } 

    //----------------------------------------------------- 

    public UserDTO userdetail { get; set; } 

    //----------------------------------------------------- 

    public string JobId { get; set; } 

    //---------------------Notification--------------------- 

    public List<NotificationDTO> listofnotification { get; set; } 

    //------------------------------------------------------- 

    public JobDTO[] JobsArray { get; set; } 

    //------------------------------------------------------------------- 

    public List<CustomersDTO> CustomerDataList { get; set; } 

} 

Je ne suis pas en mesure de résoudre cette erreur comme parfois une méthode renvoie cette erreur tout autre temps, il fonctionne parfaitement bien.

Toute aide sera appréciée car je suis frappé dans cela pour longtemps. Merci d'avance.

classe UserDTO est comme ceci:

public class UserDTO : IUserDTO 
{ 
    public Int64 Id { get; set; } 
    public string UserId { get; set; } 
    public string UserName { get; set; } 
    public string Password { get; set; } 
    public int DepartmentId { get; set; } 
    public string Email { get; set; } 
    public int UserPrivilegeId { get; set; } 
    public int LocationId { get; set; } 
    public DateTime CreatedOn { get; set; } 
    public DateTime? ExpiredOn { get; set; } 
    public byte[] Image { get; set; } 
    public DateTime? DateOfBirth { get; set; } 
    public string MobileNo { get; set; } 
    public string DepartmentName { get; set; } 
    public string UserPrivilege { get; set; } 
    public string LocationName { get; set; } 
    public string CreatedBy { get; set; } 
    public string ImageName { get; set; } 
    public string ImageExtension { get; set; } 
    public Int64? ImageSize { get; set; } 
    public string ImageSavePath { get; set; } 
    public string ImageShowPath { get; set; } 
    public string EditedBy { get; set; } 
    public DateTime? EditedOn { get; set; } 

    public string LocationShortName { get; set; } 
} 
+0

Quel est votre modèle pour 'UserDTO' - contient-il un constructeur sans paramètre? (idem pour 'CustomersDTO' et' NotificationDTO' et 'JobDTO') –

+0

Cette déclaration semble suspecte:' public UserDTO userdetail {get; ensemble; } '. Est-ce que la classe model a un constructeur d'argument vide pour la liaison? –

+0

@StephenMuecke Sir UserDTO, CustomersDTO, NotificationDTO et JobDTO sont des classes dans ma couche partagée. Je crée l'objet de ces classes dans le contrôleur, puis je passe les données à la couche d'accès aux données. –

Répondre

0

Tout se passe un pressentiment ici. Basé sur la trace de la pile, il y a un problème que le classeur de modèle n'aime pas. Vos classes DTO ont-elles des constructeurs sans paramètres?

La façon dont je débuggerais ce type de problèmes étranges est en commentant la plupart du modèle jusqu'à ce que vous trouviez la version qui fonctionne. Ensuite, introduisez progressivement de nouvelles propriétés. Ce n'est pas rapide, mais au moins vous pouvez affiner et trouver le coupable.

+0

Non, mes classes DTO n'ont pas de constructeur sans paramètre. –

+0

Comme je l'ai dit, essayez de commenter des choses hors de votre modèle afin que vous puissiez identifier quelle propriété génère l'erreur. Vous pouvez également essayer de réduire la taille si des demandes spécifiques génèrent cette erreur. –