显示视图时,在_layout.cshtml中更改一些值

时间:2013-04-08 19:31:40

标签: asp.net-mvc asp.net-mvc-4

当我返回View或PartialView时,有没有办法在_layout.cshml中更改某些部分(某些值)?我想显示视图或局部视图并更改_layout.cshtml中的一些值

_layout.cshtml

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

在控制器中:

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

谢谢,

2 个答案:

答案 0 :(得分:1)

部分是_Layout中可以由您的视图填充的占位符:

示例:

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

在您的视图中会有相应的部分

@section navBar 
  {

    @if (Model.needsNavBar==true)
    {

        //navBar code
    }


  }

如果不明显,则在_Layout中呈现视图的部分定义中的任何标记。 required: false的重要性是,如果您的部分定义不属于您的视图,那么您的网页将无误地运行。

答案 1 :(得分:0)

好的,因为你不会具体考虑一个场景

你在每个页面上都有一些你想要的数据来定义它

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

我们如何在布局

的导航栏中获取此信息

在每个控制器动作方法中你都可以做到这一点

 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(); 
    }

}

这将使其在所有行动方法中都可用

这就是一个例子,但实际上有数十种方法可以提供数据。