我在我的_布局中有一个共享的视图.我的标题名为"_header.cshtml".

我希望显示数据库中的文本和图像,因此需要我的控制器进入数据库并将其返回给_Header.cshtml.

我怎么能做到这一点,因为调用的控制器在用户进入的每一页都是不同的.有没有办法让控制器具有共享视图?

这里是_布局.cshtml

    <div id="header">
        <div id="title">
            @Html.Partial("_Header")
        </div>

        <div id="logindisplay">
           @Html.Partial("_CultureChooser")
            <br />
           @Html.Partial("_LogOnPartial")
        </div>

        <div id="menucontainer">
           @Html.Partial( "_MenuPartial")
        </div>
    </div>

    <div id="main">
        @RenderBody()
        <div id="footer">
        </div>
    </div>

</div>

推荐答案

在控件操作中,可以指定视图的名称:

public class MenuController : Controller
{
    [ChildActionOnly]
    public ActionResult Header()
    {
        var model = ... // go to the database and fetch a model
        return View("~/Views/Shared/_Header.cshtml", model);
    }
}

现在,在你的_Layout.cshtml而不是@Html.Partial("_Header")中,做以下事情:

@Html.Action("Header", "Menu")

Asp.net相关问答推荐

在Docker Windows中,ASP.NET核心容器在自定义端口8080上运行,但ASP.NET容器在固定端口80上运行

Reaction-Native SignalR连接在调试模式下工作,在释放模式下失败

ASP.NET MVC forEach 循环仅返回 1 个值

无法翻译 LINQ

Razor 页面客户端站点验证不起作用

如何在 ASP.NET 中以 'YYYY-MM-DD' 格式获取当前日期?

如何异步渲染局部视图

ASP.NET GridView 第二个标题行跨越主标题行

System.Net.Http 版本冲突导致构建警告

如何在页面的基类中执行 Page_Load()?

在 cookie 中存储多个值

将 ListItem 的 ASP.NET 列表数据绑定到 DropDownList 问题

HttpWebRequest 未通过凭据

Httpclient 该实例已经启动了一个或多个请求.只能在发送第一个请求之前修改属性

将数据表导出到 Excel 文件

如何在 GridView 中隐藏 TemplateField 列

调查 Web.Config 重复部分原因的步骤

如何使用 ConfigurationManager.AppSettings

在没有等待 #2 的情况下调用异步方法

ASP.NET 自定义控件 - 未知的服务器标记