我在我的_布局中有一个共享的视图.我的标题名为"_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相关问答推荐

在这个 For 循环计数没有增加

InvalidOperationException:在程序集上找不到UserSecretsIdAttribute

Web API 自托管 - 在所有网络接口上绑定

有条件地在 Gridview 中隐藏 CommandField 或 ButtonField

控制器 SessionStateBehavior 是只读的,我可以更新会话变量

__doPostBack 未定义

'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册.

使用域用户的 SQL 连接字符串?

在每个控制器的 ASP.NET WebAPI 上强制使用 CamelCase

IIS 6.0 通配符映射基准?

显示单选按钮列表内联

温莎城堡有什么缺点吗?

VirtualPath 在当前应用程序根目录之外

如何找出我的 Windows 域上托管 LDAP 的服务器?

如何在 C# 应用程序中调用 VBScript 文件?

Windows Azure PaaS(网络角色)的真正替代品?

Asp.Net web 服务:我想返回错误 403 禁止

人们使用 JScript.Net 的目的是什么?

强制 IIS Express 进入classic 管道模式

Application_End global.asax