Question

Dans ASP.Net MVC, ayant une forme plus ou moins comme ceci:

<% using (Ajax.BeginForm(new AjaxOptions() { OnSuccess="onSuccess"})) {%>
  <p>
    <label for="Comment">Comment:</label>
    <%= Html.TextArea("Comment")%>
    <%= Html.ValidationMessage("Comment", "*")%>
  </p>
  <p><input type="submit" value="Submit comment" /></p>
<% } %>

Comment la fonction Javascript onSuccess peut savoir si le résultat est une autre version du formulaire parce qu'il n'a pas validé, un commentaire comme div à ajouter à la liste des commentaires ou un journal à la page qui devrait être pop-up pour l'exploitation forestière dans?

Pas de solution correcte

Autres conseils

Vous pouvez définir que dans votre retour JSON ou toute autre méthode de transport que vous utilisez?

Je ne sais pas si c'est ce que vous cherchez, mais aussi: c'est ainsi que la fonction onSuccess est appelée:

YourFunction(ajaxContext);

AjaxContext est défini comme suit:

AjaxContext ajaxContext = new AjaxContext(request, updateElement, loadingElement, ajaxOptions.InsertionMode);

Vous devez remplacer le code dans votre formulaire ajax avec une nouvelle vue partielle, vous retournerez ce point de vue partielle de votre contrôleur. La vue partielle consisterait à:

<p>
    <label for="Comment">Comment:</label>
    <%= Html.TextArea("Comment")%>
    <%= Html.ValidationMessage("Comment", "*")%>
</p>
<p><input type="submit" value="Submit comment" /></p>

De cette façon, votre vue partielle fonctionne comme une vue régulière. Malheureusement, il n'y a pas de moyen simple d'exécuter javascript comme une réponse (puisque vous répondez en vue). Il serait plus facile si votre réponse est une chaîne JSON, mais dans ce cas, vous ne pouvez pas utiliser le AjaxForm parce que la chaîne JSON serait rendu à l'écran en raison de soumettre la forme (et le traitement de sa réponse). Cela peut fonctionner si (je ne l'ai pas essayé):

<p>
    <label for="Comment">Comment:</label>
    <%= Html.TextArea("Comment")%>
    <%= Html.ValidationMessage("Comment", "*")%>
</p>
<p><input type="submit" value="Submit comment" /></p>
<script type="text/javascript">
    function processResponse(data){
        // blah blah blah
    }
    processResponse(<%= ViewData["dataFromTheController"] %>);
</script>

Votre pourrait simplement ajouter différentes classes CSS aux éléments racine de vos réponses (par exemple .form, .comments, .login). Et puis (par exemple dans jQuery):

var response = $(responseContent);
$('.form', response).each(function() {
    // $(this) is form
});
$('.comments', response).each(function() {
    // $(this) is comments
});
$('.login', response).each(function() {
    // $(this) is login page
});
  

Comment le onSuccess Javascript   fonction savoir si le résultat est   une autre version du formulaire parce qu'il   n'a pas validé, un commentaire comme div   ajouter à la liste des commentaires ou un journal   en page qui devrait être pop pour   vous connecter?

La réponse courte est qu'il ne peut pas à moins que vous valider explicitement. En effet, JSON est transporté comme une chaîne et lorsque le Javascript côté client obtient la chaîne.

Pour commencer vous devez savoir implicitement quel type d'objet à attendre. Si vous appelez un service Web @ Cars/List alors vous savez l'objet retourné sera une liste de voitures et vous analysez que de façon appropriée dans votre client. Vous pouvez exécuter dans des erreurs que vous devez gérer de manière appropriée, en réitérant la demande ou les enregistrer ou afficher un message d'erreur.

Je vous recommande d'utiliser le jquery.form plug-in , cette vous pouvez avoir une forme normale d'agir comme un un ajax, comme ceci:

 <script type="text/javascript"> 
        // wait for the DOM to be loaded 
        $(document).ready(function() { 
            // bind 'myForm' and provide a simple callback function 
            $('#myForm').ajaxForm(function() { 
                alert("Thank you for your comment!"); 
            }); 
        }); 
    </script> 

<form id="myForm" action="comment.php" method="post"> 
    Name: <input type="text" name="name" /> 
    Comment: <textarea name="comment"></textarea> 
    <input type="submit" value="Submit Comment" /> 
</form>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top