2013-01-04 76 views
3

您如何實現這一目標? 此視圖自動生成。 當我手動添加一個視圖例如:聯繫與視圖Index.cshtml文件在其中。MVC 4:爲共享視圖創建控制器_Layout.cshtml

我可以通過寫一個控制器聯繫人來修改這個視圖。

public class ContactController : Controller 
{ 
    public ActionResult Index() 
    { 
     @ViewBag.Test = "this text will be used in my Contact View"; 

     return View(); 
    } 
} 

所以在我的聯繫人視圖我可以這樣做

<p> @Viewbag.Test </p> 

而文本將被顯示出來。 但是,您如何在我的Shared View中爲_Layout.cshtml文件實現此目的? 我試圖通過添加一個SharedController,但不以這種方式工作

回答

2

你不能有一個_Layout.cshtml控制器。該文件用於任何視圖的佈局。例如,看一下_ViewStart.cshtml文件在您的瀏覽文件夾:

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

這主要是告訴所有的控制器使用該佈局由周圍的控制器操作返回的視圖的包裝。

你_Layout.cshtml文件已經有了一個大概的一種方式暗示與值來填充它:

<head> 
    ... 
    <title>@ViewBag.Title</title> 
    ... 
</head> 

如果在一個視圖之後,它將在的頭/ title部分呈現_Layout.cshtml文件:

@{ 
    @ViewBag.Title = "Home"; 
} 
+0

我想你還沒有讀過這個問題。 OP想知道如何從'_Layout.cshtml'文件中訪問'ViewBag' – musefan

1

您不需要用於_Layout的控制器。您的聯繫人視圖已添加到_Layout以創建一個完整的視圖。所以你可以在_Layout裏使用你的聯繫人控制器中的任何ViewBag屬性。 _Layout可以訪問與您的聯繫人視圖相同的變量。

具體來說,在你的榜樣:

public class ContactController : Controller 
{ 
    public ActionResult Index() 
    { 
     @ViewBag.Test = "this text will be used in my Contact View"; 

     return View(); 
    } 
} 

ViewBag.Test也將訪問在_layout以同樣的方式是在您的聯繫人視圖。

相關問題