rug*_*ire 5 c# asp.net asp.net-mvc viewbag asp.net-mvc-4
我正在尝试访问ViewBag我视图中的数据,如下所示:
<span class="small">@ViewBag.BreadCrumb</span>
Run Code Online (Sandbox Code Playgroud)
我ViewBag从以下代码发送数据:
ViewBag.BreadCrumb = topic.Category.CatName + " / " + topic.Name;
ViewBag.TopicID = id;
Run Code Online (Sandbox Code Playgroud)
这topic是实体.我使用以下命令返回View:
return View(topic);
Run Code Online (Sandbox Code Playgroud)
但是,它总是给我一个例外:
Object reference not set to an instance of an object.
Run Code Online (Sandbox Code Playgroud)
在另一个页面,它运作良好.有什么解决方案吗?
编辑::
行动守则如下:
Topic topic = db.Topics.FirstOrDefault(t => t.TopicID == id);
ViewBag.Topics = from t in db.Topics where (t.CatID == topic.CatID) select t;
ViewBag.TopicID = id;
ViewBag.BreadCrumb = topic.Category.CatName + " / " + topic.Name;
return View(topic);
Run Code Online (Sandbox Code Playgroud)
编辑::
它显示以下异常:
An exception of type 'System.NullReferenceException' occurred in App_Web_ieekpj10.dll but was not handled in user code
Additional information: Object reference not set to an instance of an object.
Run Code Online (Sandbox Code Playgroud)
但是在立即窗口中,它显示输出:ViewBag.BreadCrumb"C Sharp Edit/Name-edited to CED"
编辑::堆栈跟踪
[NullReferenceException: Object reference not set to an instance of an object.]
ASP._Page_Views_Category_NewSection_cshtml.Execute() in e:\OutSourcingStuffs \OnlineLibrary\src\OnlineLinkLibrary\OnlineLinkLibrary.Web\Views\Category\NewSection.cshtml:12
System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +271
System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +121
System.Web.WebPages.StartPage.RunPage() +63
System.Web.WebPages.StartPage.ExecutePageHierarchy() +100
System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +177
System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +762
System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +382
System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +431
System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +39
System.Web.Mvc.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17() +74
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +388
System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +72
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +303
System.Web.Mvc.Async.<>c__DisplayClass2a.<BeginInvokeAction>b__20() +155
System.Web.Mvc.Async.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) +184
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +136
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +66
System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +40
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +47
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +151
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +68
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +47
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +151
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +65
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +39
System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +45
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +47
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +151
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +66
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +38
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9688704
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
Run Code Online (Sandbox Code Playgroud)
编辑视图
@model OnlineLinkLibrary.Models.Section
@{
ViewBag.Title = "New Section";
}
<div class="panel panel-default">
<div class="panel-heading ">
<div class="row ">
<div class="col-xs-6">
<h4>
New Section
<span class="small">@ViewContext.Controller.ViewBag.BreadCrumb</span>
</h4>
</div>
<div class="col-xs-6 ">
<div class="pull-right">
-- satic htmls are there
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
如果您 100% 确定ViewBag 不为 null,但 Visual Studio 始终将该行指向 null,
然后查看下一行代码的错误,编译器有时会感到困惑;)
这可能会帮助溺水的开发人员。
我建议检查主题是否为空。
Topic topic = db.Topics.Where(a=>a.TopicID == id).FirstOrDefault();
if(topic != null)
{
ViewBag.Topics = from t in db.Topics where (t.CatID == topic.CatID) select t;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4019 次 |
| 最近记录: |