ASP.NET MVC 4 - Ajax.BeginForm et html5
De La Configuration:
J'ai mis à jour une application à partir de ASP.NET MVC 3 ASP.NET MVC 4.
L'application a bien fonctionné dans MVC 3. La seule chose qui ne fonctionne pas dans MVC 4 est Ajax.Commencer formulaire: le formulaire par défaut à la page complète des demandes, au lieu de l'asynchrone des requêtes AJAX.
Il s'agit essentiellement d'un assistant que j'ai écrit, mais c'est sans importance. De modèle.Étape.ActionName correctement retourne une chaîne de caractères (voir le code ci-dessous).
Le Code:
Le code dans la Vue est:
@{
using (Ajax.BeginForm(Model.Step.ActionName, null, new AjaxOptions { UpdateTargetId = "wizardStep", OnBegin="isValid", LoadingElementId="PleaseWait", OnSuccess="SetFocusOnForm" },
new {@name="wizardForm", @id="wizardForm" } ))
{
//form contents
}
}
Le Rendu:
Je note que l'Ajax.BeginForm MVC 4 utilise le HTML 5. Je montre la différence entre la façon dont MVC MVC 3 et 4 de rendre le formulaire ci-dessous:
MVC 3:
<form action="/Solicitors/Company/New/YourDetails" id="wizardForm" method="post" name="wizardForm" onclick="Sys.Mvc.AsyncForm.handleClick(this, new Sys.UI.DomEvent(event));" onsubmit="Sys.Mvc.AsyncForm.handleSubmit(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, loadingElementId: 'PleaseWait', updateTargetId: 'wizardStep', onBegin: Function.createDelegate(this, isValid), onSuccess: Function.createDelegate(this, SetFocusOnForm) });">
//form contents
</form>
MVC 4:
<form action="/Solicitors/Company/New/LoginDetails" data-ajax="true" data-ajax-begin="isValid" data-ajax-loading="#PleaseWait" data-ajax-mode="replace" data-ajax-success="SetFocusOnForm" data-ajax-update="#wizardStep" id="wizardForm" method="post" name="wizardForm" novalidate="novalidate">
//form contents
</form>
Je n'ai aucune idée si cela est correct, mais pensent qu'il est.
Le Problème:
Le problème, cependant, est que l'Ajax n'est pas utilisé, tout plein de la page est rafraîchie. Donc sumat est faux...
La Question:
La question est: Quel est le problème?!
OriginalL'auteur awrigley | 2012-09-20
Vous devez vous connecter pour publier un commentaire.
OK, j'ai résolu ce problème.
Dans le MVC 3 app, j'avais commenté de la manière suivante dans le web.config:
C'est ce qui explique pourquoi asp.net mvc 3 n'a pas été rendu html 5.
Dans le nouveau mvc 4 app, le paramètre par défaut a
ClientValidationEnbled=true
etUnobstrusiveJavaScriptEnabled=true
, comme suit:Donc mon application nécessaires le code javascript suivant des fichiers inclus:
Et il fallait le microsoft*.js fichiers de jeter, c'est à dire:
J'ai compris après avoir lu @Darin Dimitrov est de répondre à la question suivante:
Sont MicrosoftAjax.js, MicrosoftMvcAjax.js et MicrosoftMvcValidation.js désuet que de ASP.NET MVC 3?
Merci beaucoup à Darin. La réponse est la peine de lire, de vous éclairer vous-même quant à la signification des deux appSettings j'avais désactivé.
OriginalL'auteur awrigley