微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我试图在控制器上执行操作,而不重定向到该操作的关联视图.有关我想要实现的一个很好的例子,请查看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局部视图中的内容,我认为我需要能够显示某种类型的通知(Possiblly使用PNotify添加为Bootstrap). MVC希望始终重定向到../Playlist/AddSong?playlistId=1\u0026amp;songId=1

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

解决方法

如果您不想要“完整页面重新加载”,那么您需要稍微改变问题,使用javascript动态更改页面.像 JQuery这样的库可能会让 DOM更容易操作.

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

最困难的部分是asynchronous post.有关更新div而不重新加载整个页面的帮助可以在this question找到.

编辑 – 示例

如果您使用URL myapp.com/PlayList/AddSong/进行控制器操作(接受POSTs),那么您需要设置JQuery以发布到此URL.您还可以使用您要发布的任何表单数据设置data属性,在您将dataistId和songId添加到data属性的情况下.

然后,您将使用AJAX查询(HTML)的结果并将其附加到页面上的现有播放列表HTML.因此,假设您要将部分视图的HTML附加到具有ID播放列表Div的div,并假设您的部分视图返回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版本可能存在差异等,但稍微调整它应该可以达到预期的效果.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“WPF...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这...
Some samples are below for ASP.Net web form controls:(from http://www.visualize.uk.com/resources/asp
问题描述: 对于未定义为 System.String 的列,唯一有效的值是(引发异常)。 For columns not defined as System.String, the only vali
最近用到了CalendarExtender,结果不知道为什么发生了错位,如图在Google和百度上找了很久,中文的文章里面似乎只提到了如何本地化(就是显示中文的月份)以及怎么解决被下拉框挡住的问题,谈
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence changed a lot since 1.1. Here is the order: App
静态声明: &#39; Style=&quot;position: relative&quot; AppendDataBoundItems=&quot;True&quot;&gt; (无 或 空 或
以下内容是从网络上搜集资料,然后整理而来的。不当之处,请不吝指教。(The following were from network, and edited by myself. Thanks in a
Imports System Imports System.Reflection Namespace DotNetNuke &#39;*********************************
Ok so you have all seen them: “8 million tools for web development”, “5 gagillion tools that if you