Ajax.BeginForm OnSuccess pas de tir
Je suis en utilisant cette vue partielle
@model CreateConfigEntityModel
<div class="row">
@using (Ajax.BeginForm("AddElement", "MerchantSites", new { merchantId = @Model.MerchantId }, new AjaxOptions
{
HttpMethod = "POST",
OnSuccess = "alert('ok')"
},
new { id = "addConfigForm" }
))
{
@Html.LabelFor(m => m.EntityName)
@Html.TextBoxFor(m => m.EntityName)
@Html.ValidationMessageFor(m => m.EntityName)
@Html.LabelFor(m => m.DefaultValue)
@Html.TextBoxFor(m => m.DefaultValue)
@Html.ValidationMessageFor(m => m.DefaultValue)
<input type="submit" value="Ajouter" class="tiny button" />
}
</div>
Contrôleur
public JsonResult AddElement(CreateConfigEntityModel model)
{
if (ModelState.IsValid)
{
_merchantSitesManager.AddEntity(model.EntityName, model.DefaultValue);
return Json(new { code = 1 }, JsonRequestBehavior.AllowGet);
}
else
return Json(new { code = 0 }, JsonRequestBehavior.AllowGet);
}
C'est ce que montre après la soumission du formulaire (élément est ajouté correctement)
Pas sûr de ce que je fais mal.
À l'aide de jQuery JavaScript Library v2.1.1
J'ai dans mon web.config
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
Je vais appeler ma vue partielle, comme ce
@{ Html.RenderPartial("_CreateConfigEntity", new CreateConfigEntityModel(Model.MerchantId)); }
Où le point d'arrêt est de frapper dans le contrôleur.
Le contrôleur est appelé à la validité du modèle de l'état
J'avais testé votre code c'est de travailler pour moi.
l'utilisateur fiddler outil de contrôle de la demande et de la réponse de l'appel ajax.
Le problème est que l'ensemble de la page de mise à jour, changements de l'url de AddElement. Je veux juste appeler mon succès méthode à la place.
Le contrôleur est appelé à la validité du modèle de l'état
J'avais testé votre code c'est de travailler pour moi.
l'utilisateur fiddler outil de contrôle de la demande et de la réponse de l'appel ajax.
Le problème est que l'ensemble de la page de mise à jour, changements de l'url de AddElement. Je veux juste appeler mon succès méthode à la place.
OriginalL'auteur ThunderDev | 2014-10-14
Vous devez vous connecter pour publier un commentaire.
En supposant que vous avez un nouveau projet, vous devez faire les choses suivantes pour obtenir ce travail. L'ASP.NET MVC modèle ne pas soutien discret AJAX de la boîte:
Ajouter "jquery.unobtrusive-ajax.js" à votre page. Si vous utilisez le "regroupement" dans le Système.Web.Optimisation, une solution simple serait d'ajouter à la jQuery bundle:
Vous pouvez aussi ajouter un
<script>
balise qui pointe vers le script.En supposant que le chargement de la page jQuery et jquery.unobtrusive-ajax.js le code que vous avez posté devrait fonctionner.
Existe-il des erreurs JavaScript sur la page lorsque vous cliquez sur le bouton? Vous devez activer la persistance de l'navigateur de la console entre les demandes, comme actuellement, vous êtes de faire un post complet et tous les messages d'erreur disparaîtra
My bad, je n'avais pas
jquery.unobtrusive-ajax.js
inclus. DésoléMerde. J'oublie toujours de ce nuget.package. Je pense qu'il devrait être ajouté par défaut à la MVC modèle! De toute façon, ils devraient mettre un bouton d'amour sur stackoverflow... <3
J'ai eu le même problème, j'ai oublié d'ajouter <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
OriginalL'auteur Andrew Whitaker
D'ajouter une référence à la suite de bibliothèques js:
OriginalL'auteur Hamid Narikkoden
Oui, je sais pourquoi ceux de la méthode ne sont pas appelés, vous avez toujours besoin de faire référence à l'ajax discrète fichier : jquery.unobtrusive-ajax.min.js
OriginalL'auteur tika