1

当我返回 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);
    }
}

谢谢,

4

2 回答 2

1

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

例子:

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

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

@section navBar 
  {

    @if (Model.needsNavBar==true)
    {

        //navBar code
    }


  }

如果不是很明显,则视图部分定义中的任何标记都会呈现在您的_Layout. 的重要性required: false是,如果您的部分定义不在您的视图中,您的页面将正常运行。

于 2013-04-08T20:58:05.883 回答
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(); 
    }

}

这将使它在所有操作方法中都可用

这是一个例子,但实际上有几十种方法可以使数据可用。

于 2013-04-10T21:54:14.353 回答