MVC 嵌套视图和部分视图

2023-12-26

我正在使用 MVC 3 创建原型项目,我遇到了一种情况,我似乎无法找到答案,而且似乎我可能以错误的方式处理问题。

我的项目的快速概述;它基于您通过 Visual Studio 获得的 MVC 模板,我使用提供的 _Layout 视图上的链接(选项卡)来访问我的一些其他视图。其中一个链接会打开第二个部分视图,其中再次包含更多视图的链接(特定于管理员。因此进行了拆分)。我遇到的问题是我似乎无法使用@RenderBody在第二个部分视图中,我理解这是因为你不能拥有多个@RenderBody在一个完整的 HTML 文件中,这是有道理的。

所以我的问题是,如何以这种方式显示视图?另外,可能更重要的是,这是实现我正在尝试的“子菜单”系统的正确方法还是有更好的方法来实现这一点?

这是视图的相关部分,首先是“主”_Layout 文件:

<body>
    <div class="page">
        <header>
            <div id="title">
                <h1>Test App</h1>
            </div>
            <nav>
                <ul id="menu">
                    <li>@Html.ActionLink("Home", "Index", "Home")</li>
                    @if (User.Identity.IsAuthenticated)
                    {
                        <li>@Html.ActionLink("Contracts", "List", "Contract", new { user=User.Identity.Name, page=1 }, null)</li>
                    }
                    @if (User.IsInRole("Administrator"))
                    {
                        <li id="admin">@Html.ActionLink("Administration", "Administration", "Home")</li>
                    }
                </ul>
            </nav>
        </header>
        <section id="main">
            @RenderBody()
        </section>
        <footer>
        </footer>
    </div>
</body>

当点击<li id="admin">@Html.ActionLink("Administration", "Administration", "Home")</li>链接,然后 Home 控制器返回第二个部分视图,如下所示:

<header>
    <div id="admintitle">
        <h1>Administration</h1>
    </div>  
</header>
<body>
    <div id="div-1a">
         <nav>
            <ul id="adminmenu">
                <li>@Html.ActionLink("Contact", "List", "Contact")</li>
                <li>@Html.ActionLink("Home", "Index", "Home")</li>
            </ul>
        </nav>
    </div>
    <div id="div-1c">
        <h1>Test</h1>   
    </div>
    <section id="adminmain">
        @RenderBody()
    </section>
</body>

当我尝试运行代码时,由于第二个原因而失败@RenderBody,这是可以理解的。

如果您需要更多信息,请告诉我。

非常感谢。


你不能使用@RenderBody()多次。一@RenderBody()在你的主 _Layout 文件中就足够了。在你的第二个视图中使用@RenderPartial() or @RenderAction.

UPDATE(基于第一条评论)

假设你想要渲染/Administrator/TheAction,所以你会打电话

@{
    Html.RenderAction("TheAction", "Administrator");
}

TheAction操作将如下所示:

public PartialViewResult TheAction() {
    return PartialView();
}

它会渲染视图~/Views/Administrator/TheAction.cshtml就在你打电话的地方里面RenderAction().

重要的是它不会完成另一个@RenderBody。正如你所看到的TheAction()例如,您正在返回部分查看结果,其中没有任何@RenderBody() helper.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVC 嵌套视图和部分视图 的相关文章

随机推荐

  • 如何获取空值的先前值

    我的表中有以下数据 Id FeeModeId Name Amount 1 NULL NULL 20 2 1 Quarter 1 5000 3 NULL NULL 2000 4 2 Quarter 2 8000 5 NULL NULL 500
  • 如何检测用户是否已经打开了某个网址并在已打开的情况下重定向到相同的网址?

    谁能告诉我如何检测用户是否已打开链接 url 选项卡 如果 url 已打开 是否可以将链接重定向到活动浏览器选项卡 例如 用户单击链接 js 代码将在浏览器中打开一个新选项卡 现在 如果用户再次单击该链接 我希望他重定向到活动会话 而不是打
  • 无法播放某些视频

    我正在尝试通过我们的服务器在 Android 设备上播放电影 它不是一个媒体服务器 只是一个普通的 Apache 服务器 我们使用相同的 API 来访问 iPhone 上的视频 效果很好 在 Android 设备上 某些视频可以播放 而另一
  • Office 插件开发:在 Word 2016 中插入表格

    我尝试使用 Office js 在文档正文中插入表格 但无济于事 我使用了以下代码 function insertSampleTable showNotification Insert Table Inserting table Word
  • 无法看到部署的 Firebase 功能

    我按照以下步骤操作 Firebase CLI 命令行界面 需要 Node js 和 npm 您可以按照以下说明进行安装https nodejs org https nodejs org 安装 Node js 也会安装 npm 安装 Node
  • 将 Fog 与 Ruby 结合使用生成预签名 URL 以将文件放入 Amazon S3 中

    我正在使用 Fog gem 生成预签名的 url 我可以成功地执行此操作以获得对该文件的读取访问权限 这就是我所做的 fog s3 Fog Storage new provider gt AWS aws access key id gt k
  • 从 Exact Online 检索联系人时出现错误

    我想在 Exact Online 中检索一家公司的所有联系人 但收到以下错误 select from AccountContacts Error itgenusg026 不支持请求的 3 308 列数 将请求的列数限制为最多 1 000 列
  • 哪些 MVC 框架可用于 Java 桌面/winform 应用程序?

    我要开发一个winform应用程序 我想将模型 视图和控制器分开 我没有使用过任何Java MVC框架 并且已经脱离Java几年了 谁能根据自己的经验告诉我一些合适的框架及其优缺点 我计划使用 NetBeans IDE Griffon ht
  • 使用不同的数据库进行开发与生产 Flask

    我有一个 Flask 应用程序 它根据生产环境变量和开发环境变量使用不同的数据库 我担心开发人员在运行本地 Flask 应用程序之前忘记设置 FLASK ENV development 然后突然对生产数据库进行更新 我想到的唯一简单的解决方
  • 维基数据的重复结果

    我创建了以下对 Wikidata 的 SPARQL 查询 该查询的结果是与德国各州相关的记录 但正如您所看到的 结果连续出现四次 您可以在此处测试它 https query wikidata org https query wikidata
  • 使用 php 更改 css 背景图像

    我正在为这个网站做一个个人资料 我想做一个像 Facebook 那样的封面照片元素 我遇到的问题是 首先如何保存封面的背景图片 比如 我可以将图像的 url 保存在数据库中 但是我如何才能将其放入 css 中呢 我真的不想只是说 div s
  • 如何覆盖父/扩展元素内部的 Xsd 元素

    我正在我的公司创建一个新的数据交换服务 我们想要扩展 core xsd 定义文件中定义的现有对象 这是我需要做的一个例子
  • 当鼠标悬停在浏览器栏/后退按钮上时,Javascript 弹出窗口

    我想在这个页面上模仿这个确切的功能 将鼠标移向顶部浏览器栏 http my personal growth com personal growth what anthony robbins teaches about emotions an
  • iOS 9 中的 Facebook 登录 SDK

    我正在使用 facebook 登录 SDK 它在 iOS 7 8 和 9 中完美运行 但是 如果手机有 facebook 应用程序登录验证 则可以在 iOS 7 和 8 中打开该应用程序 但 IOS 9 无法打开 facebook 应用程序
  • 如何在 Neo4j 中有效地创建独特的关系?

    跟进我的问题here https stackoverflow com questions 29873015 create on not match command for neo4js cql noredirect 1 comment486
  • keras.argmax中axis=-1的含义是什么?

    我是 Keras 的初学者 需要帮助才能理解keras argmax a axis 1 and keras max a axis 1 是什么意思axis 1 when a shape 19 19 5 80 以及输出是什么keras argm
  • JavaScript 中循环 2 个数组无法正常工作

    我有以下 JavaScript 代码 据我所知 该代码应该仅输出一次日期和相应的计算值 但是由于某种原因 我看到内部的输出不正确parseData日期记录两次并且值被覆盖的函数 我不确定是什么导致了这里的问题 这是可以使用 node js
  • 是否可以在 JavaScript 中实现动态 getter/setter?

    我知道如何为名称已知的属性创建 getter 和 setter 方法如下 A trivial example function MyObject val this count 0 this value val MyObject protot
  • 使用 SheetJS 将包含合并单元格的 .xlsx 文件转换为 JSON

    我正在尝试使用 SheetJS 读取 xlsx 文件并将其转换为 JSON 我能够读取简单的 没有合并单元格 xlsx 文件并将其转换为 JSON 但我无法正确处理合并单元格 问题是我有一个 xlsx 文件 其中包含不同语言的产品 我尝试在
  • MVC 嵌套视图和部分视图

    我正在使用 MVC 3 创建原型项目 我遇到了一种情况 我似乎无法找到答案 而且似乎我可能以错误的方式处理问题 我的项目的快速概述 它基于您通过 Visual Studio 获得的 MVC 模板 我使用提供的 Layout 视图上的链接 选