2012-11-03 75 views
1

有很多示例顯示如何從文件或數據庫存儲和檢索虛擬視圖,但沒有一個顯示如何配置根web.config以便應用程序可以工作正確地,當一個視圖的內容從文件中檢索幷包含例如@ViewBag.Title = "Some Title"行。asp.net mvc虛擬視圖和web配置

在這種情況下,我得到CS0103:「ViewBag」這個名字不會在目前情況下誤差存在, 就像在情況下,當我刪除〜/查看項目文件夾的web.config。

那麼,爲了修正上面提到的錯誤,從〜/ Views/web.config到根web.config的配置元素是什麼?

是否可以在運行時將配置元素加載到裝配體中?

回答

1

的問題是關係到一個事實,即在虛擬視圖的情況下,查看其內容是從文件或數據庫檢索,從System.Web.Mvc.ViewStartPage包含HTML和網址繼承,但不ViewBag或Ajax的性質。虛擬視圖是如下

public class DynamicViewsController : Controller 
{ 
    public ActionResult GetView() 
    { 
     //SomeModel model = new SomeModel() { Count = 1 }; 
     return View("/Virtual/VirtualViewToShow.cshtml"); 
    } 
} 

位於〜/查看/文件夾從System.Web.Mvc.WebViewPage繼承,它具有ViewBag和ViewData的,並定義Ajax的特性的視圖稱爲。

解決方法來改變動作的方法遵循

public PartialViewResult GetView() 
{ 
    //SomeModel model = new SomeModel() { Count = 1 }; 
    return PartialView("/Virtual/VirtualViewToShow.cshtml"); 
} 

和添加

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

到虛擬視圖的文本,以加載的佈局也。 我不知道爲什麼虛擬視圖繼承自System.Web.Mvc.ViewStartPage,但我會嘗試在另一個線程中找到此原因,並在創建三維線程時發佈鏈接。

編輯

所以一說鏈接到新創建的線程是here

「顯示完整的編譯源」的截圖附enter image description here

0

按照上述步驟操作即可完成!

  • 合併< configSections〜/視圖/ web.config中與根級別的web.config >
  • 現在只需移動<system.web.webPages.razor>部從〜/視圖/ web.config到根級別web.config
  • 乾杯:)其完成。
  • 你也應該合併<的appSettings >,<的System.Web > & <system.webServer>具有root級別的Web.config。
+0

當然我也跟着張貼的問題在這之前的步驟,但沒有成功。是否還有其他步驟需要遵循?它在你的情況下運作? –

+0

是的,它適用於我的情況...你能詳細說明你的整個情況嗎? –

+0

新線程是[here](http://stackoverflow.com/questions/13363273/virtual-view-inheriting-from-system-web-mvc-viewstartpage) –