Sto tentando di eseguire un'azione su un controller senza reindirizzare alla vista associata per quell'azione. Per un buon esempio di ciò che sto cercando di dare un'occhiata al sito web music.xbox.com. Quando aggiungi un brano a una playlist selezionata da un menu a comparsa, la pagina mostra solo una notifica senza alcun reindirizzamento o aggiornamento. com'è possibile?ASP.NET MVC - Esegue l'azione del controller senza reindirizzamento
Quello che ho è il seguente: Ho una parziale vista _playlistPopupMenu che rende l'elenco dei brani come segue:
_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>
}
}
L'azione PlaylistController addSong è la seguente:
public PartialViewResult AddSong(int? playlistId, int? songId)
{
if (ModelState.IsValid)
{
db.AddSongToPlaylist(playlistId, songId);
db.SaveChanges();
return PartialView("_AddToPlaylist", "");
}
return PartialView("_AddToPlaylist", "");
}
Sono in difficoltà con cosa inserire nella vista parziale _AddToPlaylist che penso di dover essere in grado di disp effettuare una notifica di qualche tipo (possibilmente utilizzando PNotify add in per Bootstrap). MVC vuole sempre reindirizzare a ../Playlist/AddSong?playlistId=1 & songId = 1
Qualsiasi idea su come completare questa ultima parte del problema sarebbe ottima.
Non è reindirizzare (HTTP 3xx), è restituendo una vista parziale. Dovresti considerare di utilizzare le richieste AJAX tramite javascript, per rendere la richiesta asincrona, elaborare la risposta e rendere ciò che ti serve nella pagina corrente. –
Come già detto, è necessario eseguire il rendering dinamico di alcune parti della pagina (utilizzando le richieste AJAX). Vedi http://stackoverflow.com/questions/11134701/jquery-load-part-of-external-html per un'idea. –