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版本可能存在差异等,但稍微调整它应该可以达到预期的效果.

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...