gpt4 book ai didi

asp.net - 将数据传递到布局页面

转载 作者:行者123 更新时间:2023-12-02 09:16:38 25 4
gpt4 key购买 nike

我有一个 layout 页面,其中包含需要填充的变量。示例:

@ModelType KarateAqua.schoolModel

<html>
<body>

@RenderBody()

<div id="footer">
<div class="content">
<div class="bottom_logo">
<a href="/"><span class="inv">@Model.schoolName</span></a>
</div>
</div>
</div>
</body>
</html>

我不想在每个 ActionResult 中填充此内容。有没有办法将数据一次传递到 layout 页面并为所有实例执行此操作?

最佳答案

创建一个操作过滤器并装饰您的 Controller 类。在操作过滤器内,您可以将值放入 View 袋中,这些值可用于您的布局。

这将针对每个请求运行,您不必在每个操作中设置值。您可以查找并忽略诸如子请求和 ajax 请求之类的内容,这些请求通常不会使用布局,并且不会为这些内容设置 viewbag 值。

下面是我创建的属性示例,用于从 session 中复制对象并通过 ViewBag 将其提供给布局

public class CurrentUserAttribute : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
// Don't bother running this for child action or ajax requests
if (!filterContext.IsChildAction && !filterContext.RequestContext.HttpContext.Request.IsAjaxRequest())
{

if (filterContext.HttpContext.Session != null)
{
var currentUser = filterContext.HttpContext.Session["CurrentUser"] as CurrentUser;
if (currentUser != null)
{
filterContext.Controller.ViewBag.CurrentUser = currentUser;
}
}
}
}


}

关于asp.net - 将数据传递到布局页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10552502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com