2010-06-25 9 views
2

Je le code suivant:Html.BeginForm dans partielle pour un autre contrôleur

<% using (Html.BeginForm("AddComment", "Comments", FormMethod.Post)) { %> 
<div id="New_Comment"> 
<textarea name="newComment" id="newComment">Add comments</textarea> 
<input type="submit" value="Add" /> 
<div><span class="text_grey">Attach:</span><a href="#" class="link_text_grey">File</a> <a href="#" class="link_text_grey">Link</a></div> 
</div> 
<%} %> 

Ceci est une partielle rendu par le contrôleur de MaPage. Pour une raison quelconque, l'action sur le formulaire est vide, si je référence une méthode sur le contrôleur MyPage cela fonctionne bien ce que je veux faire est de pointer vers un contrôleur différent avec mon formulaire.

+0

Ça me semble bien. Y at-il quelque part nous pouvons regarder le HTML généré? L'action devrait être '/ Comments/AddComment' par rapport à la racine du site. – tvanfosson

+0

Le html généré n'a aucune action

Gazeth

+0

Essayez d'être plus exhaustif. J'ai juste essayé de recréer votre problème mais j'ai eu le résultat attendu. – Trimack

Répondre

3

Pour résoudre ce problème, je simplement ajouté dans une zone valeur d'itinéraire comme ceci:

new { area = "" } 

Avec la chaîne vide diriger la route vers la zone par défaut.

+0

Je ne savais pas que c'était même possible. Tant de cordes magiques ... mais bon ça a marché. –

2

1) Votre action "Commentaires" est-elle marquée comme étant une action POST?

2) De plus

Essayez de faire simplement:

<% Html.BeginForm("AddComment", "Comments"); %> 

// Html and script 

<% Html.EndForm(); %> 

Je sais qu'il ne devrait pas être différence entre ce que vous avez et ce que je propose, mais il vaut la peine d'essayer.