Il ya une meilleure façon pour ce faire, utiliser le construit en paramètres que l'OnSuccess appel peut être devrait passer
construit dans les paramètres (ceux que j'ai trouvé pour l'instant en tout cas) sont données, le statut et le xhr
données = ce que vous êtes de retour de la méthode d'action
statut = en cas de succès ce statut est juste une chaîne de caractères qui dit que "la réussite"
xhr = objet qui pointe vers un tas de javascript trucs que je ne vais pas discuter...
si vous définissez votre javascript comme ceci (vous pouvez laisser de côté les arguments que vous n'avez pas besoin - depuis que nous voulons de nos données à partir de l'action, nous allons juste prendre les données de l'argumentation)
function myOnSuccessFunction (data)
{
..do stuff here with the passed in data...
}
comme je l'ai dit auparavant, les données est tout ce que JSON qui peuvent être retournés par l'ActionResult donc, si votre méthode d'action du contrôleur ressemble à ceci...
public ActionResult MyServerAction(Guid modelId)
{
MyModel mod = new MyModel(modelId);
mod.DoStuff();
return Json(mod, JsonRequestBehavior.AllowGet);
}
vous devez définir votre lien d'action comme ça...
@Ajax.ActionLink("Do Stuff", "MyServerAction", new { modelId = Model.Id }, new AjaxOptions { OnSuccess = "mySuccessScript(data);", OnFailure = "myFailureScript();", Confirm = "Are you sure you want to do stuff on the server?" })
cela va créer une boîte de message de confirmation vous demandant si vous souhaitez invoquer l'action en cliquant sur oui à l'invite de l'appel au contrôleur - lorsque l'appel provient de retour - les données argument contient un objet JSON de ce que vous êtes retourné dans votre méthode d'action. Facile Comme Bonjour!
Mais attendez! Que faire si je veux passer à une autre coutume argument?! Simple! Ajoutez simplement vos arguments à l'avant de la liste...
au lieu de cela...
function myOnSuccessFunction (data)
{
..do stuff here with the passed in data...
}
le faire (vous pouvez avoir plus d'un personnalisé argument si vous le souhaitez, il suffit de garder les ajouter en tant que de besoin)...
function myOnSuccessFunction (myCustomArg, data)
{
..do stuff here with the passed in data and custom args...
}
puis dans votre installation - qui vient d'obtenir l'argument par certains script côté client, au sein de votre ActionLink définition... c'est à dire
@Ajax.ActionLink("DoStuff", "MyServerAction", new { modelId = Model.Id }, new AjaxOptions { OnSuccess = "mySuccessScript(myClientSideArg, data);", OnFailure = "myFailureScript();", Confirm = "Are you sure you want to do stuff on the server?" })
Notez que "myClientSideArg" dans le OnSuccess paramètre peut venir de partout où vous en avez besoin - il suffit de remplacer ce texte par ce que vous avez besoin.
Espérons Que Ça Aide!