2013-03-21 22 views
36

我有一臺Windows 2003 R2服務器。我必須運行一個.NET MVC3網站。 我已經安裝了所有的Runtimes(1,2和4),我已經安裝了所有的MVC框架(3和4),但是這個錯誤並沒有消失。名稱'ViewBag'在當前上下文中不存在

我有應該在視圖中的web.config。我已經遵循所有和每個解決方案來解決這個問題。我也通過使用Add Deployable Dependencies(右鍵單擊mvc項目)在我的bin文件夾中部署了所有的dll。

在這一點上,我不知道還有什麼要做。在線提出想法或解決方案。

我已經卸載並重新安裝了所有運行時,框架等。在我的本地計算機上運行得很好(windows 7),但是當我部署時,出現以下錯誤。

Compiler Error Message: CS0103: The name 'ViewBag' does not exist in the current context

Source Error:

Line 1: @{

Line 2: ViewBag.Title = "Home Page";

Line 3: }

Line 4: <h2>@ViewBag.Message</h2>

Source File: d:\FamilyDermMVC\Views\Home\Index.cshtml Line: 2

+0

包括你的web.config和views \ web.config(刪除任何敏感數據)會非常有幫助。 –

+0

我並不瞭解真實情況,但在我的情況下,我在Properties中選擇了之前的目標框架(從4.6到4.5.2,重新編譯並全部消失),然後我回到4.6做同樣的事情 –

回答

1

好的。我修好了它。我不知道究竟是什麼修復了它,但我想這整個「9英里」修復它。

我刪除了(刪除程序)所有MVC擴展,工具和任何你在那裏找到的。

然後重新安裝,但不刪除.net運行時。 2和4.

然後安裝mvc3和mvc4回來。我去了asp.net的最新版本。

然後我在筆記本電腦上做了同樣的事情。

注意:您需要Power Shell 2.0才能在Windows2003服務器中安裝MVC4。您需要找到該服務器的特定下載。

一旦我這樣做,回收應用程序池並重新啓動服務器。

BANG ...頁面已加載。

我希望這可以幫助其他人在未來。

謝謝你的回答。

PS:我的感覺是,我沒有在我的筆記本電腦和服務器分別有相同的版本(或版本)的mvc3(或mvc4)。

+5

[標記您的答案爲可接受](http://meta.stackexchange.com/a/5235)。 –

+0

難道你沒有看到我解釋了整個過程? –

69

聽起來你缺少的Web.Config在視圖文件夾如下:

/Views/Web.Config

<?xml version="1.0"?> 

<configuration> 

    <system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 

     <pages pageBaseType="System.Web.Mvc.WebViewPage"> // <-- this line and contents are important 
     <namespaces> 
      <add namespace="System.Web.Mvc" /> 
      <add namespace="System.Web.Mvc.Ajax" /> 
      <add namespace="System.Web.Mvc.Html" /> 
      <add namespace="System.Web.Routing" /> 
     </namespaces> 
     </pages> 

    </system.web.webPages.razor> 

視圖通常從System.Web.Mvc.WebViewPage獲得其配置在web.config中。如果不與應用程序部署DLL,基類是安裝在以下DLL:

Assembly System.Web.Mvc.dll, v4.0.30319

c:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies\System.Web.Mvc.dll

更新1

如果手動從MVC X升級到MVC Y和本需要改變你的目標.Net框架(比如4.5到4.6),如果你有舊的引用(指向MVC 5而不是6),顯然老的文件不能與新文件結合使用(例如MVC 5 DLLs不能用於4.6中的System.Web)。

+0

那部分對我來說...... –

+2

對我來說......我的/Views/Web.config被標記爲「無」而不是「內容」(對於構建操作)。我改變了它,重新部署了,它運行良好。 –

+3

更新版本號''host factoryType =「....'爲我工作 – Jay

4

我看到這是過去一段時間發佈的,但我認爲我會在這個問題上添加我的經驗。

在創建一個新的MVC asp.net項目時,我得到了同樣的錯誤。我只需點擊BUILD - > Clean Solution,然後Build Build,它解決了我的問題。仍然不太清楚爲什麼錯誤首先出現,儘管它在第一次生成後就出錯了。

+0

來過這裏也是這麼說的。不完全確定是什麼原因造成了這種情況發生在我的VS. – Johnrad

0

在我的情況下,我得到了這個問題,因爲我試圖運行一個MVC 3項目到MVC 2的平臺。

然後我在我的系統上安裝MVC 3的問題消失

5

我有相同類型的問題(html助手代碼不被識別)。

我不知道它是如何開始,但我通過更換以下解決它:

<appSettings> 
    <add key="webpages:Enabled" value="false" /> 
</appSettings> 

<appSettings> 
    <add key="webpages:Version" value="3.0.0.0" /> 
</appSettings> 
的意見web.config文件

發現我的解決方案here

1

似乎有很多解決方案以及各自的成功率參差不齊。

對於我來說,在這條線的查看/的web.config文件的改變版本號的工作:

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 

我改變4.0.0.05.0.0.0,保存,關閉解決方案,重新打開,然後瞧!惱人的紅色波浪線是gones和智能感知返回

1

ReSharper的可能是導致其

進入到Visual Studio /工具/選項/ ReSharper的 然後單擊掛起現在 /然後恢復ReSharper的和你一天將不再是灰色,但可能你的剃鬚刀窗口會有更多的灰色!

+0

爲我工作,謝謝 –

0

有時關閉視圖,重建,打開視圖有幫助。

相關問題