Ho un progetto ASP.NET MVC in cui voglio postare un articolo nel database e quindi visualizzare uno snippet dell'articolo nella pagina. Quando un utente commenta, voglio anche visualizzare il commento una volta salvato nel database. Sto usando AJAX per questo e chiamare i metodi OnFailure
e OnSuccess
in entrambi i casi.ASP.NET MVC Pagina non aggiornata quando si utilizza AJAX
Il metodo OnFailure
si attiva solo quando salvi un post e non un commento (questo perché la pagina non viene aggiornata anche quando salvo con successo). Il metodo OnSuccess
non viene invocato affatto, poiché la mia pagina non viene aggiornata.
Sto usando jQuery 2.1.4 e ho jquery.unobtrusive-ajax script caricato nel mio progetto
Ecco il mio codice.
// View per la creazione di un posto di
@using (Ajax.BeginForm("Create", "Post",
new AjaxOptions
{
HttpMethod = "POST",
UpdateTargetId = "insertnewpostbelow",
InsertionMode = InsertionMode.InsertAfter,
OnSuccess = "postingSucceeded()",
OnFailure = "postingFailed()"
}))
{
//View code left out
}
// lato server per il risparmio postale e l'aggiornamento PartialView
[HttpPost, ValidateAntiForgeryToken, ValidateInput(false)]
public async Task<PartialViewResult> Create
([Bind(Include = "ID,Title,Message,PostedOn,isAbuse,By")] Post post)
{
if (ModelState.IsValid)
{
var list = new List<Post>();
list.Add(post);
try
{
db.Posts.Add(post);
await db.SaveChangesAsync();
return PartialView("_Posts", list);
}
catch (RetryLimitExceededException)
{
ModelState.AddModelError("", "Unable to login, please try again and contact administrator if the problem persists.");
//If we got this far, model has errors.
ViewBag.By = new SelectList(db.Members, "ID", "FullNames", post.By);
return PartialView("_Posts", post);
}
}
//If we got this far, model has errors.
ViewBag.By = new SelectList(db.Members, "ID", "FullNames", post.By);
return PartialView("_Posts", post);
}
il file
function postingSucceeded() {
alert("Posting succeeded.");
}
function postingFailed() {
alert("Posting failured.");
}
// // Porzione mio JavaScript della vista da aggiornare
<div id="big-posts">
<span id="insertnewpostbelow"></span>
@Html.Partial("_Posts", Model.Posts)
</div>
Cosa mi sto perdendo, grazie in anticipo.
Non è necessaria la parentesi nei parametri ajax.beginform dovrebbe essere "OnSuccess =" postingSucceeded ", OnFailure =" postingFailed "' –
Grazie a @AlexArt per averlo indicato. Tuttavia dopo aver cambiato il codice, il mio problema non è stato risolto – Dev
puoi condividere anche la tua vista parziale. – MstfAsan