我有一个奇怪的问题。
除了一个视图页面外,我的MVC应用程序似乎工作得很好。
有问题的视图页面(组织/编辑)在页面上的每个代码项上都会出现'NullReferenceException'。是 Html.TextBoxFor()还是 HTML.AntiForgeryToken()。
我的模型,视图和控制器都放在我认为相关的另一个问题上 - https://stackoverflow.com/questions/26475866/dropdownlistfor-null-reference-error
如下所示,我的模型确实包含了信息。此屏幕截图是在控制器内的“返回视图(”编辑“,模型)”处进行的。
例外详细信息
- 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)
查看
@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
我注意到的一件事是,如果我注释掉我的'textboxfor',我的错误将发生在'ValidationSummary()',如果我注释掉我的'ValidationSummary()',那么我的错误将发生在'AntiForgeryToken( )”
所以似乎错误只发生在最后一个可能的代码区域。
答案 0 :(得分:36)
我找到了问题的答案here
对于任何发现此事的人:
尝试在错误后注释掉下一个代码行。
@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
在上面的情况中,我会在model.organizationSub.subTitle
上收到错误。如果我评论该行,我会在model.organizationSub.subName
行上出错。然后我找到了提到的链接并注释掉了 AFTER 所有TextBoxFors。这解决了我的问题。
来自链接:&#34;有时,编译器无法指向剃刀视图中具有特定类型错误的确切行,可能是因为它无法将其行号保留在堆栈跟踪或某处。我在Null Reference Exception中找到了这种情况,并且在Url.Content中传递了null。
因此,当堆栈跟踪显示的行没有出现任何错误时,检查剃刀视图中的下一个C#语句是有帮助的。&#34;