[英]ASP.NET MVC NullReferenceException when returning view
這正在工作,只是一天下來,而當我坐下來進行工作時,我退出了。 我無法為自己的生活弄清楚。 我得到的錯誤是:
我可以啟動該應用程序,但是一旦導航到此頁面,它就會在嘗試顯示視圖時彈出錯誤。
這是我的控制器
// GET: Form/Create
public ActionResult Create()
{
List<METHOD> methods = new List<METHOD>();
List<NATION> nations = new List<NATION>();
List<LANGUAGE> languages = new List<LANGUAGE>();
List<string> headers = new List<string>();
List<string> footers = new List<string>();
List<string> cssFiles = new List<string>();
using(var context = new Entities(_connectionString))
{
// Get a list of methods to choose from incase they want to change the method
methods = context.METHODs.ToList();
// Get list of nations to choose from
nations = context.NATIONs.OrderBy(x => x.NAME).ToList();
// Get list of languages
languages = context.LANGUAGES.OrderBy(x => x.DESCRIPTION).ToList();
// Get list of headers that are used today (from the DB...not solution)
headers = context.WEB_CONTACT_DETAILs.Select(x => x.HDR_LINK).Distinct().ToList();
headers.Sort();
// Get list of footers that are used today (from the DB...not solution)
footers = context.WEB_CONTACT_DETAILs.Select(x => x.FTR_LINK).Distinct().ToList();
footers.Sort();
// Get list of headers that are used today (from the DB...not solution)
cssFiles = context.WEB_CONTACT_DETAILs.Select(x => x.CSS_LINK).Distinct().ToList();
cssFiles.Sort();
}
ViewData["methods"] = methods;
ViewData["nations"] = nations;
ViewData["languages"] = languages;
ViewData["headers"] = headers;
ViewData["footers"] = footers;
ViewData["cssFiles"] = cssFiles;
return View();
}
我已經完成了所有步驟,所有數據都正確地從DbContext加載,列表對象正是我返回視圖之前所期望的。
這是視圖
@using Company.ContactFormAdmin.Web;
@using Company.ContactFormAdmin.Web.Models
@model FormViewModel
@{
ViewBag.Title = "Edit";
List<METHOD> methods = (List<METHOD>)ViewData["methods"];
List<NATION> nations = (List<NATION>)ViewData["nations"];
List<LANGUAGE> languages = (List<LANGUAGE>)ViewData["languages"];
List<string> headers = (List<string>)ViewData["headers"];
List<string> footers = (List<string>)ViewData["footers"];
List<string> cssFiles = (List<string>)ViewData["cssFiles"]; //<--this is where the exception is getting thrown.
}
<h2>New Contact Form</h2>
<div class="container"> //Truncated to keep it short...
我已經遍歷了上面的每個List對象,並使用從控制器傳遞來的數據填充了每個對象。 我也嘗試將它們全部設置為null,並且錯誤仍然在同一位置拋出。 我還嘗試了不從控制器傳回任何東西,但這種情況仍然會發生。
@{
ViewBag.Title = "Edit";
List<METHOD> methods = null;// (List<METHOD>)ViewData["methods"];
List<NATION> nations = null;// (List<NATION>)ViewData["nations"];
List<LANGUAGE> languages = null;// (List<LANGUAGE>)ViewData["languages"];
List<string> headers = null;// (List<string>)ViewData["headers"];
List<string> footers = null;// (List<string>)ViewData["footers"];
List<string> cssFiles = null;// (List<string>)ViewData["cssFiles"];
}
我還嘗試了清潔和重建,但均無濟於事。 如果刪除最后一行(“ cssFiles”),則會在前一行(“頁腳”)上引發錯誤。
全棧跟蹤
at ASP._Page_Views_Form_Create_cshtml.Execute() in c:\Projects\ConsumerServices\ContactFormAdmin\ContactFormAdmin_Soln-MVC-EB\ContactFormAdmin.Web\Views\Form\Create.cshtml:line 8
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.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
有人知道我該如何進一步解決該問題或之前已經處理過該問題嗎?
通過消除過程,我得以解決此問題。 我不知道為什么突然間這成為一個問題,但是錯誤實際上在視圖的不同部分,向下。
我使用的是傳統的HTML <input>
標記,而不是ASP.NET的HTML幫助器。 通過替換此:
<input class="form-control" id="WEB_PAGE_NAME" name="WEB_PAGE_NAME" value="@Model.WEB_PAGE_NAME">
有了這個:
@Html.TextBoxFor(model => model.WEB_PAGE_NAME, new { @class = "form-control" })
我能夠使錯誤消失。 我不知道為什么傳統標簽會工作一段時間,然后停止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.