2014-10-21 82 views
23

Sto avendo un problema dispari.System.NullReferenceException in App_Web _ *. Dll

La mia applicazione MVC sembra funzionare perfettamente bene tranne che per una pagina di visualizzazione.

La pagina di visualizzazione in questione (Organizzazione/Modifica) riceve una 'NullReferenceException' su ogni elemento del codice sulla pagina. Che si tratti di Html.TextBoxFor() o HTML.AntiForgeryToken().

ho il mio modello, View, Controller e disposti qui un'altra domanda che penso sia correlata - https://stackoverflow.com/questions/26475866/dropdownlistfor-null-reference-error

Come potete vedere qui sotto, il mio modello ha informazioni all'interno di esso. Questa cattura dello schermo è stata scattata nel "Return View (" Modifica ", modello)" all'interno del controller.

Dettagli eccezione

- 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

Visualizza

@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 

Una cosa che ho notato è che se io commento la mia 'textboxfor', si verificherà il mio errore a il 'ValidationSummary()', se commento il mio 'ValidationSummary()', quindi il mio errore si verificherà in "AntiForgeryToken()".

Quindi sembra che l'errore si verifichi solo nell'ultima area di codice possibile.

+1

Puoi pubblicare la vista o almeno le parti pertinenti? – DavidG

+0

@DavidG done sir – MaylorTaylor

+0

Sei in grado di rilevare l'eccezione per ottenere maggiori informazioni su di esso? Non ho familiarità con questa particolare tecnologia, ma nella domanda che hai collegato diceva "Non gestito nel codice utente", quindi forse la gestione dell'eccezione farà almeno luce su ciò che viene referenziato. – McTalian

risposta

34

ho trovato la risposta al mio problema here

Per chiunque a trovare questo:

Prova commentando la riga di codice successiva dopo l'errore.

@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 

Nel caso di cui sopra, vorrei ottenere errori sul model.organizationSub.subTitle. Se ho commentato quella linea, avrei avuto errori sulla linea model.organizationSub.subName. Ho quindi trovato il link citato e commentato la linea DOPO tutti i miei TextBoxFors. Questo ha risolto il mio problema.

Dal collegamento: "Alcune volte il compilatore non ha potuto puntare su linee esatte che hanno tipi specifici di errori nella vista del rasoio potrebbe essere perché non poteva mantenere il loro numero di linea nella traccia dello stack o da qualche parte. Ho trovato questo caso con Null Reference Exception e quando null viene passato in Url.Content.

Quindi è utile verificare la successiva istruzione C# nella visualizzazione a rasoio quando non si è verificato alcun errore sulla riga mostrata dallo stack trace. "

+2

Un altro grande ringraziamento! Ho avuto lo stesso problema in cui un modello di rasoio lanciava un errore NullReference quando si utilizzava un file .resx per le stringhe, anche se la riga di errore effettiva era la successiva riga di codice .Net che tentava di utilizzare una proprietà sul modello. –

+3

Vorrei poterlo revocare più di una volta. Ho perso un'ora cercando di capire cosa stava causando la NullReferenceException che stavo ottenendo, quando non c'era niente di sbagliato nella mia chiamata TextBoxFor ... –