2010-06-16 4 views
2

Je suis assez nouveau à MVC. J'ai mon premier formulaire Ajax ici:MVC2 Ajax Form fait actualisation de la page non désirée

<div id="test"></div> 
<div id="MainChatMenu"> 
<% using (Ajax.BeginForm("SendMessage", "MainChat", new AjaxOptions { UpdateTargetId="test"})) 
{ %> 
    <input id="chatMessageText" type="text" maxlength="200" /> 
<input type="submit" value="Go"/> 
<% } %> 

Maintenant, si je clique sur le bouton Envoyer, la page est rechargeait, à MySite goint/contrôleur/action. Je pensais que le comportement par défaut de l'Ajax.BeginForm était exactement de ne pas le faire? Où est mon erreur de débutant?

Mon contrôleur est appelé correctement, mais le transfert de données ne fonctionne pas non plus. Probablement à cause de la même erreur? Voici le code:

public class MainChatController : Controller 
{ 
    [AcceptVerbs(HttpVerbs.Post)] 
    public EmptyResult SendMessage(FormCollection formValues) 
    { 
     return new EmptyResult(); 
    } 

} 

Répondre

3

Assurez-vous que vous avez inclus les bibliothèques de scripts nécessaires:

<script type="text/javascript" src="<%= Url.Content("~/scripts/MicrosoftAjax.js") %>"></script> 
<script type="text/javascript" src="<%= Url.Content("~/scripts/MicrosoftMvcAjax.js") %>"></script> 
+2

Oups, je suis désolé, c'était vraiment une question de débutant.Y compris les scripts l'a corrigé! – Sparhawk

0
<% using (Ajax.BeginForm("SendMessage", "MainChat", new{}, new AjaxOptions { UpdateTargetId="test", HttpMethod="POST"})) %> 
+0

System.Web.Mvc.Ajax.AjaxOptions ne contient pas de définition pour HttpMode. Si je prends HttpMethod (qui existe), j'ai le même comportement qu'avant. – Sparhawk

+0

Avez-vous remarqué le nouveau {} avant les AjaxOptions? – Gregoire

+0

Non, je ne l'ai pas fait. Maintenant c'est: en utilisant (Ajax.BeginForm ("SendMessage", "MainChat", nouveau {}, nouveau AjaxOptions {UpdateTargetId = "test", HttpMethod = "POST"})) Votre "nouveau {}" doit être le routeValues. Pourquoi cela devrait-il faire la différence? Mon action possède la valeur d'attribut HttpVerbs.Post et elle est exécutée (le point d'arrêt est touché). Donc le "post" semble être ok. – Sparhawk

Questions connexes