Comment utiliser Ajax.BeginForm OnSuccess et OnFailure Méthodes?

j'ai l'aide de cet Ajax.BeginForm

    <% using( Ajax.BeginForm( "Create","Mandate",
                       new AjaxOptions( ) {
                           OnSuccess = "GoToMandates",
                           OnFailure = "ShowPopUpError"
                       } ) ) {%>

<% } %>

Qu'est-ce que j'ai besoin d'écrire dans le controleur pour attraper cette OnSucces et cette OnFailure.

Parce que OnSuccess j'ai besoin de montrer le Succès de message

OnFailure j'ai besoin de montrer othere message.

Dans mon contrôleur

Public ActionResult GetSomething(FromCollection collection)
{
     if(exists == null)
     {
          //OnSuccess
     }
     else
     { 
         //OnFailure
     }
}
<!-Est-ce que anydboy peut m'aider?. comment rattraper cela?

Merci

22
demandé sur splattne 2011-04-01 23:14:59

2 réponses

L'OnSuccess et L'OnFailure semblent s'attendre à des fonctions de rappel javascript.

<script type="text/javascript">
    function handleError(ajaxContext) {
    var response = ajaxContext.get_response();
    var statusCode = response.get_statusCode();
    alert("Sorry, the request failed with status code " + statusCode);
    }
</script>

<%= Ajax.ActionLink("Click me", "MyAction",
new AjaxOptions { UpdateTargetId = "myElement", OnFailure = "handleError"}) %>

Exemple Pro ASP.NET cadre page 425

ASP.NET Classe AjaxOptions


Ajout D'Un Exemple De Controller

la façon la plus simple de faire cela serait ce que j'ai ici, mais je recommande de regarder dans les vues MVC fortement dactylographiées en utilisant une sorte de modèle de vue et peut-être regarder dans l'utilisation de jQuery pour votre ajax. Avec qui dit cela devrait, espérons-le travailler pour vous.

if (exists)
{
  ViewData["msg"] = "Some Success Message";
}
else
{
  ViewData["msg"] = "Some Error Message";
}

return View();

Dans votre vue.

<div id="myResults" style="border: 2px dotted red; padding: .5em;">
    <%: ViewData["msg"]%>
</div>
27
répondu Nicky Waites 2011-04-01 20:35:53

je cherchais aussi la même réponse, mais ressemble à Ajax.BeginForm ().. 's événements ne sont pas bien documentés ou ont besoin de plus d'auto expériences pour savoir quand ces événements onSuccess et onFailure sont appelés. Mais j'ai obtenu une alternative très facile et simple pour ne pas se soucier de mettre onsuccess et onfailure propriétés de L'AjaxOptions. Plutôt, dans la méthode D'action de votre Controller, il vous suffit d'appeler la méthode javascript onSuccess(), onFailure() en envoyant ActionResult sous JavaScriptResult. Par exemple,

Public ActionResult Create(FromCollection collection)
{
     if(exists == null)
     {
          //OnSuccess
           return JavaScript("OnSuccess();");
     }
     else
     { 
         //OnFailure
         return JavaScript("OnFailure();");
     }
}

Et l'Ajax.BeginForm balise

 <%
  using( Ajax.BeginForm( "Create","Mandate", new AjaxOptions())) // see, no OnSuccess and OnFailure here.

{%>

<% } %>

Maintenant, vous devez définir les méthodes javascript OnSuccess() et OnFailure() dans votre page et c'est tout.

EDIT:

je pensais, peut-être, que OnSuccess() sera appelé par défaut si aucune Exception n'est lancée depuis le serveur. OnFailure () sera appelé si une Exception est lancée du serveur. Je n'ai pas tester ce concept encore. Si cela est vrai, alors, ce ne sera pas une bonne idée de pratiquer l'envoi de JavaScript("OnSuccess();") et JavaScript("OnFailure();"); à partir du serveur, parce que ce ne sera pas un bon modèle à suivre.

10
répondu Emran Hussain 2014-05-23 00:44:34