MVC 3:通过ajax加载时如何渲染没有布局页面的视图?

2024-04-26

我正在学习渐进增强 http://en.wikipedia.org/wiki/Progressive_enhancement我有一个关于 AJAX 化视图的问题。在我的 MVC 3 项目中,我有一个布局页面、一个视图启动页面和两个普通视图。

viewstart 页面位于 Views 文件夹的根目录中,因此适用于所有视图。它指定所有视图都应该使用_Layout.cshtml他们的布局页面。布局页面包含两个导航链接,每个视图一个。链接使用@Html.ActionLink()将其自身呈现到页面上。

现在我已经添加了 jQuery,并希望劫持这些链接并使用 Ajax 将其内容动态加载到页面上。

<script type="text/javascript">
    $(function () {
        $('#theLink').click(function () {
            $.ajax({
                url: $(this).attr('href'),
                type: "GET",
                success: function (response) {
                    $('#mainContent').html(response);
                }
            });
            return false;
        });
    });
</script>

我可以想到两种方法来做到这一点,但我并不特别喜欢其中一种:

1)我可以将整个视图的内容放入局部视图中,然后让主视图在渲染时调用局部视图。这样,使用Request.IsAjaxRequest()在控制器中,我可以返回View()或返回PartialView()根据请求是否是 Ajax 请求。我无法将常规视图返回到 Ajax 请求,因为这样它将使用布局页面,并且我会获得注入的布局页面的第二个副本。然而,我不喜欢这个,因为它迫使我只用一个来创建空视图@{Html.RenderPartial();}其中用于标准 GET 请求。

    public ActionResult Index()
    {
        if (Request.IsAjaxRequest())
            return PartialView("partialView");
        else
            return View();
    }

然后在 Index.cshtml 中执行以下操作:

@{Html.RenderPartial("partialView");}

2) 我可以从 _viewstart 中删除布局指定,并在请求不是 Ajax 时手动指定它:

    public ActionResult Index()
    {
        if (Request.IsAjaxRequest())
            return View(); // Return view with no master.
        else
            return View("Index", "_Layout"); // Return view with master.
    }

有人有更好的建议吗?有没有办法返回没有布局页面的视图?如果它是 ajax 请求,则明确地说“不包含您的布局”比如果不是 ajax 则明确包含布局要容易得多。


In ~/Views/ViewStart.cshtml:

@{
    Layout = Request.IsAjaxRequest() ? null : "~/Views/Shared/_Layout.cshtml";
}

并在控制器中:

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

MVC 3:通过ajax加载时如何渲染没有布局页面的视图? 的相关文章

  • 将信号/槽(QObject)添加到 QGraphicsItem:性能受到影响?

    我想将信号 槽添加到 QGraphicsItem 以便我可以从另一个线程访问 QGraphicsItemObjects 我知道有两个选项 使用 QGraphicsObject 或从 QObject 和 QGraphicsItem 继承 使用
  • 从 proc/pid/cmdline 解析命令行参数

    我正在尝试解析命令行参数另一个程序 这是一个模拟器 在我的程序中使用system 命令和模拟器的pid 不幸的是同时使用文件读取和cat 输出格式不正确 所以我无法真正获取数据 cat在命令行上显示删除了空格的文件内容 整个字符串粘在一起
  • 为什么实体框架会生成大参数?如何减少它们?

    在一个非常简单的数据库查询中 service GetAll
  • 如何测试 PARTIAL 视图在 C# ASP .NET MVC 中呈现

    我有一个视图 它内部有部分视图渲染 div class partialViewDiv Html RenderPartial partial Model SomeModelProperty div 和一个返回此视图的控制器 public Ac
  • g++.exe 和 x86_64-w64-mingw32-g++.exe 有什么区别?

    同样的问题也适用于 gcc ar 等 在 Code Blocks 中将工具链可执行文件从 Something exe 更改为 x86 64 w64 mingw32 something exe 时 代码仍然可以完美编译 此外 32 位和 64
  • 一个阻塞但非模态的 QDialog?

    我有一堆图像 我想对其执行一些操作 处理完每个图像后 我的程序应该弹出一个对话框 提示用户是否要继续处理下一个图像或中止 在此之前 他们应该有机会对图像或参数进行一些手动更改 无论如何 他们必须能够访问应用程序的窗口 而调用对话框的方法的执
  • FileStream - “不支持给定路径的格式”

    我正在尝试使用EPPlus http epplus codeplex com 在我们的 LAN 上保存电子表格 我正在使用一个FileStream对象执行此操作 但是每当我尝试实例化该对象时 我都会收到错误 The given path s
  • 从网站保存嵌入的 pdf

    我正在编写一个小型 C 应用程序来管理供应商提供的 化学品 安全数据表 目前 我手动搜索该化学品并保存 pdf 并在我的程序中添加指向 pdf 的链接 问题是我还有很多化学品需要处理 所以最好将过程自动化 例如 化学品的部件号如下 2710
  • 您在 C# 或 .NET 中见过的最奇怪的极端情况是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 QtCreator 中查看数组内容

    调试时是否可以在 Qt Creator 中查看数组的内容 似乎检测到我的数组是一个数组而不是一个指针 此外 我可以点击一个箭头 就像展开一样 但之后什么也没有显示 当我试穿的时候std vector Qt Creator 设法按预期显示内容
  • aspnet_Profiles 表中的 PropertyValuesString 和 PropertyValuesBinary 字段有何用途?

    我认为 PropertyValuesString 用于通常是这些类型对象的键值对的值部分 但是 如果您已经将值放入 PropertyValuesString 中 那么 PropertyValuesBinary 字段会出现在哪里呢 这两个字段
  • 串行端口轮询和数据处理

    我正在尝试通过微控制器从传感器的多个串行端口读取数据 每个串口将接收超过2000个测量值 每个测量值7个字节 全部为十六进制 而且他们同时开火 现在我正在从 4 个串行端口进行轮询 另外 我将每个测量值转换为字符串并将其附加到字符串构建器
  • ASP.NET 5 (vNext) - 配置

    我正在尝试学习 ASP NET 5 我在 Mac OS X 上使用它 此时 我有一个如下所示的 config json 文件 配置 json AppSettings Environment dev DbSettings AppConnect
  • C/C++ 特殊 CPU 功能的使用

    我很好奇 新的编译器是否使用了新 CPU 中内置的一些额外功能 例如 MMX SSE 3DNow 所以 我的意思是 在最初的 8086 中甚至没有 FPU 所以旧的编译器甚至不能使用它 但新的编译器可以 因为 FPU 是每个新 CPU 的一
  • 有没有 C# 到 C 的转换工具? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道 C 与 NET Framework 不同 C 是一种符合 ECMA ECMA 334 和 ISO
  • C++ 中的 Ofstream 数组

    我想要在我的项目中使用 41 个输出文件来在其上写入文本 首先创建一个字符串数组list为了命名这些输出文件 然后我尝试定义一个 ofstream 对象数组并使用list命名它们 但我收到此错误 outfile cannot be used
  • 通过 boost::python 将 C++ 对象传递给 python 函数

    我想在 C 应用程序中使用嵌入 python 并调用 python 脚本中定义的函数 该函数的参数是一个 C 对象 看我的代码 class Test public void f std cout lt lt sss lt
  • C/C++ 中的最小二乘回归

    如何在 C C 中实现因子分析的最小二乘回归 the黄金标准是LAPACK http www netlib org lapack lug node27 html 你特别想要xGELS
  • 如何注销多个非当前用户的会员用户?

    我正在使用属于 MVC2 默认项目一部分的 MembershipProvider 我希望能够获取用户名列表 注销用户 并在需要时销毁他们的会话 我能想到的最接近的是 foreach string userName in UserNames
  • ASP.NET 捆绑和缩小 - 包括用于生产捆绑的已缩小文件和用于开发的未缩小文件

    我需要一些有关 ASP NET MVC 捆绑和缩小的专家建议 我的项目脚本文件中有未缩小的 js 和缩小的版本 min js 我已将它们包含在我的脚本包中 如下所示 bundles Add new ScriptBundle bundles

随机推荐

  • Rails Routes - 限制资源的可用格式

    我有一系列资源 我只想通过 JS 格式访问这些资源 Rails 的路线资源为我提供了格式和标准 HTML 有没有办法指定只创建JS格式的路由 您必须将这些路由包装在一个范围内 不幸的是 在这种情况下 约束不能按预期工作 这是此类块的一个示例
  • IntelliJ + Groovy + Spock:没有为模块定义 Groovy 库

    我一直在尝试在 IntelliJ IDEA 中创建一个带有 Spock 测试的 Groovy 项目 以下是我遵循的步骤 创建 Groovy 项目并添加 Maven 支持 添加了 Spock 依赖项和插件 我使用的 POM 与此非常相似 ht
  • Android 底部导航栏重叠 Spinner。设置微调器下拉高度/边距

    我在处理 Android Honeycomb 项目时偶然发现了一个有趣的问题 如下图所示 在对话框中展开微调器时 底部的导航栏会与其重叠 因此 无法选择底部的元素 为了解决这个问题我尝试使用android fitsSystemWindows
  • NSLog 编码错误

    我的以下代码有问题 NSString strValue 你好 char temp 200 strcpy temp strValue UTF8String printf s temp NSLog s temp 代码第一行有两个汉字被双引号括起
  • 以编程方式将 TortoiseSVN 与 C# 或其相关进程结合使用来检查存储库是否是最新的

    有没有办法以编程方式将 TortoiseSVN 与 C 或其相关进程一起使用来检查存储库是否是最新的 我可以使用 System Diagnostics Process 但我不想显示任何 GUI 内容 我没有SVN 它是开源的 所以我可以浏览
  • Visual Basic 6.0 中的无效限定符错误

    在 Visual Basic 6 0 程序中 我有一个字符串 sTemp 我想确保它不包含引号 我有这行 If sTemp Contains Then 但是当我在 sTemp 之后输入句点时 我没有从智能感知中得到任何信息 并且当我尝试编译
  • 对话流 v2 api 中的 app.setContext() ?

    v2 API 中 v1 中的对话流 app setContext 的等效项是什么 考虑到迁移指南概述的设置 如下 例如 当下面的演示代码中触发欢迎意图时 您会进行什么调用来设置上下文 v2 const functions require f
  • git:更改旧的提交消息而不产生冲突

    我想使用以下命令更改一个相当旧的提交消息 git rebase i sha1 of commit 这很好 我愿意git commit amend并编辑消息 但是当我这样做时事情会变得很糟糕 git rebase continue 我遇到了多
  • 如何创建一个 Java 应用程序来读取 twitter feed?

    我想创建一个小型应用程序 仅使用应用程序级身份验证来访问 twitter api 来读取提要 我在网上阅读了很多文档 感到非常困惑 我了解 twitter api 需要 OAth 来授权任何应用程序从 twitter 获取或写入数据 为了获
  • 错误:没有这样的文件或目录 - C

    解读完这个之后comment https stackoverflow com questions 41281332 code directory structure library design comment69813504 412816
  • TypeScript 将通用对象从蛇形命名法转换为驼峰命名法

    我想编写一个函数 它接受带有蛇形键的对象并将其转换为带有驼峰式键的对象 假设我们知道输入对象的类型 但希望解决方案是通用的 那么在 TypeScript 中输入此类函数的最佳方式是什么 type InputType snake case k
  • 如何导航到托管 bean 中的另一个页面?

    我正在尝试使用命令按钮转发托管 bean 中的页面
  • 如何使用 AWS CLI 列出用户及其权限?

    我运行这个命令 aws iam list users 我得到了用户列表 但没有列出权限 意味着如果某人是 root 或 s3fullaccess 等 我运行另一个命令 aws iam list user policies user name
  • Powershell Invoke-RestMethod 字符不正确

    我正在使用 Invoke RestMethod 从我正在使用的应用程序中获取页面名称 我注意到 当我在页面上执行 GET 操作时 它会返回页面名称 如下所示 该页面正在运行 然而实际的页面名称是 此页面 正在运行 这是我的请求的样子 Inv
  • 查找并删除 csproj 文件中的重复条目

    我们最近合并了两个代码分支 最终在 csproj 文件中的几个文件中出现了重复的条目 这似乎发生在所有需要 复制到输出目录 的文件上 在进行更改并与其他分支合并后 将其更改为 始终复制 我想知道如果这样下去是否会导致任何意想不到的问题以及我
  • 无法签出远程 git 分支

    我在 github 本地克隆中 以下是分行列表 git branch a master online demo remotes origin HEAD gt origin master remotes origin develop remo
  • 调整小倍数迷你图

    我有一个热图 显示一些数据和热图每行的迷你图 如果用户单击行标签 则数据按降序排列 因此每个矩形都会放置在正确的位置 反之亦然 如果用户单击列标签 每个反应都以正确的方式放置 但我无法放置迷你图 这是代码 http plnkr co edi
  • 在哪里定义与 symfony2 中的实体相关的静态数组?

    我有一个数组包含与实体相关的静态数据Product public static category array 1 gt animal png 2 gt blague png 3 gt devinette png 4 gt enfant pn
  • stdClass 对象在实时站点上有奇怪的怪癖,但在本地计算机上没有[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我创建了一组辅助函数 让我在 php 中进行数据库操作时更加轻松 本质上 我向函数传递一个 stdClass 对象 然后它们使用该
  • MVC 3:通过ajax加载时如何渲染没有布局页面的视图?

    我正在学习渐进增强 http en wikipedia org wiki Progressive enhancement我有一个关于 AJAX 化视图的问题 在我的 MVC 3 项目中 我有一个布局页面 一个视图启动页面和两个普通视图 vi