Formulaire de publication sans @ HTML.Beginform et en utilisant Jquery (ajax) dans asp.net MVC
Comment puis-je remplir un formulaire sans l'aide de @HTML.Beginform et en utilisant Ajax de JQuery à la place? Droit maintenant, j'ai essayé:
var postData = { form1: username, form2: password };
$.ajax({
type: "POST",
url: '/Controller/Method',
data: postData,
dataType: "json",
traditional: true
});
Mais après l'affichage, le navigateur n'accédez pas à la vue correcte. Bien sûr, je dois retourner Voir() correctement dans le contrôleur. À l'aide de Fiddler je vois qu'il est correctement affiché et la réponse est correct aussi...
Dois-je ont utiliser @HTML.Beginform ou puis-je le faire avec Ajax?
source d'informationauteur Dimo
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un code HTML brut
<form>
balise ou la@HTML.BeginForm
helper. Voici un exemple en utilisant simplementHTML
Solution complète:
Je recommande d'utiliser
@Url.Action
pour définir l'URL de votre formulaire d'action. Cette façon de routage peuvent générer votre URL.Il est un peu plus avancé, mais je voudrais essayer d'utiliser quelque chose comme Prenez Les Commandes pour gérer vos appels Ajax jQuery.
Avertissement, je suis un contributeur à la TakeCommand projet.
Lorsque vous utilisez
@Html.BeginForm
la sortie HTML est:Et lorsque vous validez le formulaire, le navigateur gère exactement comme une autre page de navigation (seulement en utilisant
POST
méthode) donc la réponse est chargé dans le cadre parent.Mais, lorsque vous êtes à l'ouverture d'une
Ajax
demande, c'est à vous de gérer la réponse du serveur (généralement en utilisant une fonction de rappel).Si vous souhaitez simuler la forme régulière de la soumission de comportement, il pourrait être quelque chose comme:
Ce ne serait pas remplacer la totalité du contenu de la page avec la réponse (seul le
BODY
contenu), mais dans la plupart des cas, ce sera très bien.Cela va faire un post xhr pour le serveur et le retour de la vue que les données (réponse)
Il ne sera pas naviguer, si elle renvoie html, vous devez définir un bon type de données dans votre demande de dire que vous vous attendez à du html à partir du serveur:
Donné votre action est de retour html, vous pouvez mettre le code html renvoyé sur votre page dans votre réussite fonction.
Dans votre action;