ASP.NET MVC - 执行控制器操作而不重定向

2023-11-22

我试图在控制器上执行操作,而不重定向到该操作的关联视图。有关我想要实现的目标的一个很好的示例,请访问 music.xbox.com 网站。当您从弹出菜单将歌曲添加到选定的播放列表时 - 页面仅显示通知,而不进行任何重定向或刷新。这怎么可能?

我所拥有的是以下内容: 我有一个 _playlistPopupMenu 部分视图,它呈现播放列表列表,如下所示:

_PlaylistPopupMenu

@model List<OneMusic.Models.GetPlaylists_Result>
@if (Model.Count > 0)
{
    <li style="height:2px" class="divider"></li>
    foreach (var item in Model)
    {
        <li style="height:30px">@Html.DisplayFor(p => item.Name)
            @Html.ActionLink(item.Name, "AddSong", "Playlist", new { playlistId =   @item.PlaylistId, songId = 1 }, "") 
       </li>
    }
} 

PlaylistController AddSong 操作如下:

public PartialViewResult AddSong(int? playlistId, int? songId)
{
    if (ModelState.IsValid)
    {
        db.AddSongToPlaylist(playlistId, songId);
        db.SaveChanges();
        return PartialView("_AddToPlaylist", "");
    }
    return PartialView("_AddToPlaylist", "");
}

我正在努力考虑在 _AddToPlaylist 部分视图中放入什么内容,我认为我需要能够显示某种通知(可能使用 Bootstrap 中的 PNotify 添加)。 MVC 希望始终重定向到 ../Playlist/AddSong?playlistId=1&songId=1

关于如何完成问题最后一部分的任何想法都会很棒。


如果您不希望“整页重新加载”,那么您需要稍微不同地解决该问题,使用 javascript 动态更改页面。一个图书馆,例如JQuery可能会使操纵DOM容易一点。

  1. 使用 JavaScript 动态显示弹出窗口。
  2. 当用户在弹出窗口中点击“确定”/“提交”时,使用 JavaScript 将数据发布回服务器,并让您发布的控制器返回一些 HTML。
  3. 将返回的 HTML 块(部分视图)附加到包含播放列表曲目的现有 div。

其中最困难的部分是异步发布。有关在不重新加载整个页面的情况下更新 div 的帮助,请参阅这个问题.

EDIT- 例子

如果您有控制器操作(接受POSTs)与网址myapp.com/PlayList/AddSong/,然后您需要设置 JQuery 以发布到此 URL。您还可以设置data包含您想要发布的任何表单数据的属性,在您的情况下,您需要添加playistId and songId to the data财产。

然后,您可以使用 AJAX 查询 (HTML) 的结果并将其附加到页面上现有的播放列表 HTML。因此,假设您要将分部视图的 HTML 附加到具有 ID 的 divplaylistDiv,并假设您的部分视图返回 HTML,该 HTML 在附加到现有播放列表时有效,那么您的 javascript 将如下所示:

var data = { playlistId: 1, songId: 1 };
$.ajax({
  type: "POST",
  url: 'http://myapp.com/PlayList/AddSong/',
  data: data,
  success: function(resultData) {
      // take the result data and update the div
      $("#playlistDiv").append(resultData.html)
  },
  dataType: dataType
});

免责声明:我不能保证此代码将 100% 工作(除非我自己编写程序)。您使用的 JQuery 版本等可能存在差异,但稍加调整就应该达到预期的结果。

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

ASP.NET MVC - 执行控制器操作而不重定向 的相关文章

随机推荐

  • 使用 python pandas 将新数据框附加到现有 Excel 工作表

    我目前有这段代码 它工作完美 它循环遍历文件夹中的 Excel 文件 删除前 2 行 然后将它们另存为单独的 Excel 文件 它还将循环中的文件保存为附加文件 当前附加文件覆盖每次运行代码时都会使用现有文件 我需要将新数据附加到底部已有的
  • 批量删除(截断与删除)

    我们有一个包含 150 多万条记录的表 我们需要清除 删除所有行 由于删除操作会写入 t log 因此删除操作将永远持续下去 并且我们无法更改整个数据库的恢复模型 我们已经测试了截断表选项 我们意识到 截断会从表中释放页面 如果我没记错的话
  • 如何将 EFS 共享挂载到 AWS Fargate?

    我有一个存储容器日志的 AWS EFS 共享 我想将此 nfs 共享 aws efs 挂载到 AWS Fargate 是否可以 任何支持文档链接将不胜感激 你可以这样做自2020年4月起 这有点棘手但有效 我遇到的最大问题是您需要将 平台版
  • 使用 java.io 寻找 ByteArrayInputStream

    我怎样才能寻找 改变立场 ByteArrayInputStream java io 这是显而易见的事情 但我似乎无法在任何地方找到这种方法 mark reset还不够 我需要将位置设置到InputStream 如果不能使用java io我必
  • 在Java中裁剪图像[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在尝试用 Java 剪切图像的某个部分并将其保存回磁盘 有没有一个函数可以从X Y上剪切指定宽度和高度的图像 你通常会 创建一个新的BufferedImage dst如下 具
  • 如何在PHP中对日期数组进行排序?

    我是 php 新手 我有 php 日期数组 0 gt 11 01 2012 1 gt 01 01 2014 2 gt 01 01 2015 3 gt 09 02 2013 4 gt 01 01 2013 我想将其排序为 0 gt 11 01
  • Windows 命令提示符中的 EOF 不会终止输入流

    Code include
  • ATL 简单对象向导 - “对象 Xxx 已存在”错误

    我正在尝试使用以下命令在我的 DLL 中创建一个新的 COM 对象ATL 简单对象向导在 Visual Studio 2005 中 我输入对象的短名称 然后派生出所有其他字段 但是 当我点击Next在向导中 出现以下错误消息 Object
  • 对 boost::timer::auto_cpu_timer 的未定义引用

    我尝试使用 g 4 4 在 Debian 上的远程服务器上编译带有 boost 库的小 cpp 文件 我为此目的使用 Netbeans 我的家用机器运行的是 Windows 7 解决了链接下一个代码的一些问题后 include
  • $_SERVER['HTTP_ORIGIN'] 不起作用

    当我使用 SERVER HTTP ORIGIN echo SERVER HTTP ORIGIN 返回 注意 未定义索引 第 12 行 D xampp htdocs safe test php 中的 HTTP ORIGIN 怎么了 The O
  • 如何知道 Mac 中当前架构是 i386 还是 x86_64? (Xcode)

    我正在处理在不同架构中需要不同参数的相机 是否有一个标志可以检查我的 Mac 中是 32 位还是 64 位 我正在尝试这个 但似乎不起作用 我总是得到 32 位 if defined PER ARCH CFLAGS x86 64 NSLog
  • 如何向 MVC3 中同一对象的实例显示不同的必需消息?

    我有一个 Razor MVC3 项目 其中表单中有两条用户记录 一条用于关键联系人 一条用于备份联系人 例如 public class User Required ErrorMessage First name is required pu
  • 为 getopt 覆盖 $argv

    示例 php args FILE vvv argv explode args argc count argv GLOBALS argv SERVER argv argv GLOBALS argc SERVER argc argc var e
  • 上传前对 Rails 中的文件大小进行自定义验证

    以我的形式我有 在我的模型中我想写这个 validate validates uploadfile def validates uploadfile file max size 2048 errors add uploadfile File
  • -[UITableView dequeueReusableCellWithIdentifier:forIndexPath:] 中的断言失败

    由于某种原因 我的应用程序在尝试将单元格加载到表格视图中时失败 我在整个应用程序中的所有表格视图都完全相同 我对它们没有任何问题 是否可能与从另一个 viewController 初始化 Controller 有关 我不这么认为 我在故事板
  • 安装 mysql-python 时出错:找不到 -lssl 的库

    我在安装 mysql python 时遇到问题 创建了一个新的 virtualenv 并在安装 mysql python 时 这是错误消息 env pip install mysql python Collecting mysql pyth
  • Python pandas:替换与另一个数据帧中的多列匹配的多列值

    我搜索了很多答案 最接近的问题是比较2个不同pandas数据帧的2列 如果相同则在Python中插入1到另一个 但是这个人的特定问题的答案是一个简单的合并 它并不能以一般的方式回答这个问题 我有两个大型数据框 df1 通常约 1000 万行
  • Canvas URL/安全 Canvas URL 错误消息

    我目前正在尝试启动并运行 Facebook 应用程序 但当我尝试访问应用程序 URL 时 收到以下错误消息 抱歉 您使用的应用程序配置错误 请 稍后再试 仅供开发人员使用的消息 要修复此错误 请在应用程序中设置您的 Canvas URL 安
  • 报表查看器 - 请求 SqlClientPermission 类型的权限失败

    我在本地模式下使用 Visual Studio 2008 中的 ReportViewer 控件 并将对象作为数据源 我的类映射到数据库中的数据表 在对象中 它根据需要加载相关对象 因此 它会将引用保留为空 直到您尝试使用该属性 然后它会尝试
  • ASP.NET MVC - 执行控制器操作而不重定向

    我试图在控制器上执行操作 而不重定向到该操作的关联视图 有关我想要实现的目标的一个很好的示例 请访问 music xbox com 网站 当您从弹出菜单将歌曲添加到选定的播放列表时 页面仅显示通知 而不进行任何重定向或刷新 这怎么可能 我所