J'ai une vue pour créer un nouveau compte dans mon application. Cette vue commence par Html.BeginForm() et frappe le bon contrôleur (Create) sans problèmes.MVC 1.0 Ajax.BeginForm() soumettre à l'intérieur d'un Html.BeginForm()
J'ai décidé d'ajouter un Ajax.BeginForm() afin que je puisse m'assurer qu'un compte avec le même nom n'existe pas déjà dans mon application.
Lorsque je clique sur le bouton Soumettre à l'aide de l'un ou l'autre bouton, il passe au même contrôleur (Créer). Pour essayer de différencier le bouton de soumission qui a été cliqué, je mets une vérification pour voir si la requête est Ajax alors essayez d'exécuter un chemin de code différent. Mais Request.IsAjaxRequest()
ne tire pas. Quel est mon meilleur pari pour implémenter cette fonctionnalité dans un formulaire existant avec MS Ajax?
<% using (Html.BeginForm()) {%>
..............
<% using(Ajax.BeginForm("Echo",
new AjaxOptions() { UpdateTargetId = "EchoTarget" }))
{ %>
Echo the following text:
<%=Html.TextBox("echo", null, new { size = 40 })%>
<input type="submit" value="Echo" />
<% } %>
<div id="EchoTarget">
code du contrôleur
:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(User newUser)
{
if (Request.IsAjaxRequest())
{
return Content("*you hit the ajax button");
}
else
{ //regular create code here.....
}
</div>
Vous pouvez également explorer la possibilité d'utiliser des Iframes. http://ajaxpatterns.org/IFrame_Call –
Les formulaires multiples ne sont vraiment pas un problème. Il ne s'agit que de les imbriquer, ce qui n'est jamais vraiment nécessaire.Si vous avez recours à JS, vous pouvez aussi concocter directement un POST au lieu d'utiliser un formulaire HTML. –
La solution élégante consommée est d'utiliser le mécanisme de demande JSON après avoir accroché jQuerypowerhorse au chariot MVC! –