2012-02-16 76 views
2

將我的MVC 3 Web應用程序發佈到我的網站時,出現錯誤,指出未將對象引用設置爲對象的實例。ViewBag - 未找到對象引用 - MVC 3

的 '錯誤' 行是: 線路2:ViewBag.Title = "Index";

這是我的索引視圖:

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

這是我的家庭控制器:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

namespace WebApplication.Controllers 
{ 
    public class HomeController : Controller 
    { 
     // 
     // GET: /Home/ 

     public ActionResult Index() 
     { 
      return View(); 
     } 

    } 
} 

我已經上傳的DLL :

System.Web.Helpers 
System.Web.Mvc 
System.Web.Razor 
System.Web.WebPages 
System.Web.WebPages.Deployment 
System.Web.WebPages.Razor 

感謝您的任何援助

回答

4

當您在/Views/Shared/_Layout.cshtml看,你可能會看到這樣的事情:

<title>@ViewBag.Title</title> 

它是假設這屬性已設置的地方。通常,你在你的子視圖中設置它。所以最簡單的解決方案是修改您的Index.cshtml視圖,以便它類似於這樣的:

@{ 
    ViewBag.Title = "Title of the page"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
+0

感謝您的答覆,如你所說,但現在我得到了我所做的更改「對象引用不設置到對象的實例。」在'佈局='部分。我是否應該使用WebPages 1.0.0.0或WebPages 2.0.0.0我上傳了WebPages 2.0.0.0 dll – ElveMagicMike 2012-02-16 15:05:24

+0

當您在Visual Studio中查看項目中的System.Web.WebPages引用的屬性時,它會告訴您需要哪個版本。如果您需要更多關於「bin部署」您的MVC 3應用程序的幫助,可以查看本指南:http://www.hanselman.com/blog/BINDeployingASPNETMVC3WithRazorToAWindowsServerWithoutMVCInstalled.aspx – 2012-02-16 15:17:49

+0

謝謝,我應該使用WebPages 1.0.0.0 ,我該如何升級到2.0.0.0版本? – ElveMagicMike 2012-02-16 15:19:47

9

我碰到了同樣的ViewBag錯誤。 在我的案例模型是null,但異常指向viewbag行。

當我通過模型查看錯誤修復。

+0

這也適用於我。謝謝! – 2015-01-16 10:37:02

+0

我的模型爲空,但異常重定向到ViewBag。奇怪!但你的解決方案工作。謝謝。 – 2015-09-16 05:49:43

+0

我有類似的問題。模型中的實體爲空/空。嘗試將實體的名稱傳遞給另一個ImageHelper函數,並得到viewbag錯誤。奇怪的。但是,謝謝。 – ransems 2018-02-17 17:12:25

0

請確保layout(_Layout.cshtml)存在於Views文件夾中。 Views文件夾中的cshtmls/aspx只能繼承ViewBag屬性。

〜Z