2013-04-08 36 views
1

當我返回View或PartialView時,是否有方法在_layout.cshml中更改某些部分(某些值)?我想顯示視圖或部分查看和更改某些值在_layout.cshtml在顯示視圖時更改_layout.cshtml中的某些值

_layout.cshtml

<div id="#mydiv"></div> 

在控制器:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new MyModel(); 
     return View(model); 
    } 
} 

謝謝,

+0

有很多方法可以改變值,如何處理一些示例代碼和描述什麼以及什麼時候需要改變「值」。 – Peter 2013-04-08 19:35:26

+0

很多....給我一個它足夠:)我更新了問題。 – 2013-04-08 19:42:03

+0

創建一個部分 – 2013-04-08 20:05:36

回答

1

部分是您的_Layout中的佔位符,可以由您的視圖填充:

例子:

<div id="navBar"> 
    @RenderSection("navBar", required: false) 
</div> 

將有一個相應的部分在你的瀏覽

@section navBar 
    { 

    @if (Model.needsNavBar==true) 
    { 

     //navBar code 
    } 


    } 

如果不是很明顯,無論標記在您查看的部分定義去你_Layout呈現。 required: false的重要性在於,如果您的部分定義不在您的視圖中,您的網頁將無誤地運行。

+0

我們可以在@section上使用模型嗎? – 2013-04-08 21:01:10

+0

@克里斯 - 我當然。無論如何都可以使用模型。這就像在您的視圖中創建標記,除了它在您的佈局的部分區域中呈現。 (這有道理嗎?) – 2013-04-08 21:41:40

+0

我可以再問你一個問題嗎? – 2013-04-09 11:13:35

0

OK,因爲你不會具體讓我們考慮一個場景

你有,你想在每一頁上的一些數據讓把它定義

// pretend it comes from your database or where ever 
var somedata = Guid.NewGuid(); 

我們如何在導航欄獲取此我們的佈局

井每個控制器的actionmethod你可以做到這一點

public ActionResult Index(AssessorSearchRecordSearchViewModel model) 
{ 
    ViewBag.SomeData = Guid.NewGuid(); 
    return View(); 
} 

,然後顯示它在標題視圖與

<h1>@ViewBag.SomeData</h1> 

但是這將是惱人做,它的脆性改變

你可以爲你的控制器創建一個基類

public abstract class AppBaseController : Controller 
{ 
    protected override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     base.OnActionExecuting(filterContext);    
     ViewBag.SomeData = Guid.NewGuid(); 
    } 

} 

這將使它在所有的行動方法中都可用

這就是一個例子,但實際上有幾十種方法可以使數據可用。

相關問題