当我返回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);
}
}
谢谢,
答案 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();
}
}
这将使其在所有行动方法中都可用
这就是一个例子,但实际上有数十种方法可以提供数据。