2014-10-21 10 views
23

Mam dziwny problem.System.NullReferenceException w App_Web _ *. Dll

Moja aplikacja MVC działa doskonale bez wyjątku dla jednej strony widoku.

Strona widoku (Organizacja/edycja) otrzymuje "wyjątek NullReferenceException" na każdym elemencie kodu na stronie. Niezależnie od tego, czy jest to Html.TextBoxFor() lub HTML.AntiForgeryToken().

Mam model, widok i kontroler rozplanowany tutaj na kolejne pytanie, które moim zdaniem jest związane - https://stackoverflow.com/questions/26475866/dropdownlistfor-null-reference-error

Jak widać poniżej, mój modelu ma informacji wewnątrz niego. Ten zrzut ekranu został zrobiony w "widoku zwrotnym (" Edit ", model)" wewnątrz kontrolera.

Wyjątek Szczegóły

- 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

Zobacz

@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 

Jedną rzeczą jest fakt, że jeśli mogę skomentować mój 'textboxfor', mój błąd będzie występować w "ValidationSummary()", jeśli skomentuję moją "ValidationSummary()", to mój błąd wystąpi w "AntiForgeryToken()".

Wygląda więc na to, że błąd pojawia się w ostatnim możliwym obszarze kodu.

+1

Czy możesz opublikować widok lub przynajmniej odpowiednie części? – DavidG

+0

@DavidG done sir – MaylorTaylor

+0

Czy jesteś w stanie złapać wyjątek, aby uzyskać więcej informacji na ten temat? Niezbyt zaznajomiona z tą konkretną technologią, ale w zadanym przez ciebie pytaniu napisano "Nie traktowano w kodzie użytkownika", więc może obsługa wyjątku przynajmniej rzuci trochę światła na to, do czego się odwołuje. – McTalian

Odpowiedz

34

znalazłem odpowiedzi na mój problem here

Na każdy znalezieniu tego:

Spróbuj zakomentowanie następną linię kodu po błędzie.

@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 

W powyższym przypadku dostanę błędy na model.organizationSub.subTitle. Gdybym skomentował tę linię, otrzymywałbym błędy na linii model.organizationSub.subName. Następnie znalazłem wspomniany link i skomentował linię wszystkie moje TextBoxFors. To naprawiło mój problem.

Od linku: "Czasami kompilator nie mógł wskazać na dokładne wiersze mające określone rodzaje błędów w widoku maszynki, może to być spowodowane tym, że nie mógł zachować numeru wiersza w stosie lub gdzieś w innym miejscu.Znalazłem ten przypadek z wyjątkiem odwołania zerowego i gdy wartość null jest przekazywana w Url.Content:

Warto zatem sprawdzić następną instrukcję C# w widoku golarki, gdy nie wystąpił błąd na linii pokazanej przez ślad stosu. "

+2

Kolejne wielkie dzięki! Miał ten sam problem, gdy szablon maszynki do golenia wyrzucał błąd NullReference podczas używania pliku .resx dla łańcuchów, mimo że aktualny wiersz błędu był następną linią .Net kodu próbującego użyć właściwości w Modelu. –

+3

Chciałbym móc to powtórzyć więcej niż raz. Zmarnowałem godzinę próbując zrozumieć, co powodowało wywołanie wyjątku NullReferenceException, gdy nic nie było nie tak z moim wywołaniem TextBoxFor ... –