簡體   English   中英

返回視圖時,ASP.NET MVC NullReferenceException

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM