web-dev-qa-db-fra.com

System.NullReferenceException dans App_Web _ *. Dll

J'ai un problème étrange.

Mon application MVC semble fonctionner parfaitement bien, sauf pour une page d'affichage.

La page d'affichage en question (Organisation/Édition) obtient une "NullReferenceException" sur chaque élément de code de la page. Que ce soit Html.TextBoxFor () ou HTML.AntiForgeryToken () .

J'ai mon modèle, ma vue et mon contrôleur présentés ici sur une autre question qui, je pense, est liée - https://stackoverflow.com/questions/26475866/dropdownlistfor-null-reference-error

Comme vous pouvez le voir ci-dessous, mon modèle contient des informations à l'intérieur. Cette capture d'écran a été prise dans la " vue de retour (" Modifier ", modèle) " à l'intérieur du contrôleur.

Détails de l'exception

- Source = App_Web_zu4jlld0
- StackTrace =    at ASP._Page_Views_Organization_Edit_vbhtml.Execute() in C:\Users\mtaylor\Projects\Check Im Here\mtaylor-branch\CheckImHere_v2\CheckImHereMVC\Views\Organization\Edit.vbhtml:line 16
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
   at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
   at System.Web.WebPages.StartPage.RunPage()
   at System.Web.WebPages.StartPage.ExecutePageHierarchy()
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
   at System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance)
   at System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer)
   at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17()
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)

enter image description here

Voir

@ModelType CheckImHereMVC.OrganizationEditViewModel

@Using Html.BeginForm("Edit", "Organization", FormMethod.Post)
 @Html.AntiForgeryToken() 'get errors here
 @Html.ValidationSummary(True) 'get errors here
 @Html.TextBoxFor(Function(model) model.organizationSub.subName, New With {.class = "span12"}) 'and errors here
End Using

Une chose que je remarque est que si je commente mon 'textboxfor', mon erreur se produira au 'ValidationSummary ()', si je commente mon 'ValidationSummary ()', alors mon erreur se produira au 'AntiForgeryToken ()'.

Il semble donc que l'erreur se produit uniquement dans la dernière zone de code possible.

25
MaylorTaylor

J'ai trouvé la réponse à mon problème ici

Pour tous ceux qui trouvent ceci:

Essayez de mettre en commentaire la ligne de code suivante APRÈS l'erreur.

@ModelType CheckImHereMVC.OrganizationEditViewModel

@Using Html.BeginForm("Edit", "Organization", FormMethod.Post)
   @Html.AntiForgeryToken() 
   @Html.ValidationSummary(True) 
   @Html.TextBoxFor(Function(model) model.organizationSub.subName, New With {.class = "span12"})
   @Html.TextBoxFor(Function(model) model.organizationSub.subTitle, New With {.class = "span12"})
   <img src="@Url.Content(Model.img.imgPath)" alt="IMAGES"/> 'commenting out this line fixed my issue
End Using

Dans le cas ci-dessus, j'obtiendrais des erreurs sur le model.organizationSub.subTitle. Si je commentais cette ligne, j'obtiendrais des erreurs sur le model.organizationSub.subName ligne. J'ai ensuite trouvé le lien mentionné et commenté la ligne [~ # ~] après [~ # ~] tous mes TextBoxFors. Cela a résolu mon problème.

Du lien: "Parfois, le compilateur ne pouvait pas pointer sur des lignes exactes ayant un type spécifique d'erreurs dans la vue du rasoir, car il ne pouvait pas garder leur numéro de ligne dans la trace de la pile ou quelque part. J'ai trouvé ce cas avec une exception de référence nulle et lorsque null est passé dans Url.Content.

Il est donc utile de vérifier la prochaine instruction C # en vue rasoir lorsque vous n'avez pas obtenu d'erreur sur la ligne indiquée par la trace de pile. "

37
MaylorTaylor