2008-12-23 5 views
1

Je rencontre des problèmes pour envoyer mon formulaire à ma méthode Save dans un contrôleur. Je suis nouveau à MVC, et j'ai suivi plusieurs exemples pour essayer de faire fonctionner cela. Voici mon code html:Impossible d'obtenir le formulaire ASP.NET MVC pour envoyer

<form action="Edit/Save" method="post"> 
     <fieldset> 
      <legend>Personal Information</legend> 

      <table class="editGrid"> 
       <tr> 
        <td><label for="txtFirstName">First Name:</label></td> 
        <td><input type="text" id="txtFirstName" value="<%=user.FirstName %>" name="FirstName" /></td>      
       </tr> 
       <tr> 
        <td><label for="txtLastName">Last Name:</label></td> 
        <td><input type="text" id="txtLastName" value="<%=user.LastName %>" name="LastName" /></td>      
       </tr> 
       <tr> 
        <td><label for="txtNtLogin">NT Login:</label></td> 
        <td><input type="text" id="txtNtLogin" value="<%=user.NtLogin %>" name="NtLogin" /></td>     
       </tr> 
       <tr> 
        <td><label for="txtHireDate">Hire Date:</label></td> 
        <td><input type="text" id="txtHireDate" value="<%=string.Format("{0:d}",user.HireDate) %>" name="HireDate" /></td>    
       </tr> 
      </table> 
     </fieldset> 

     <fieldset> 
      <legend>Job Information</legend> 

      <table class="editGrid"> 
       <tr> 
        <td><label for="CostCenters">Cost Center:</label></td> 
        <td><%=Html.DropDownList("CostCenters")%></td> 
       </tr> 
       <tr> 
        <td><label for="Managers">Manager:</label></td> 
        <td><%=Html.DropDownList("Managers")%></td> 
       </tr> 
       <tr> 
        <td><label for="Responsibilities">Responsibility:</label></td> 
        <td><%=Html.DropDownList("Responsibilities")%></td> 
       </tr> 
       <tr> 
        <td><label for="Departments">Department:</label></td> 
        <td><%=Html.DropDownList("Departments")%></td>       
       </tr> 
       <tr> 
        <td><label for="Active">Active:</label></td> 
        <td><%=Html.CheckBox("Active",user.Active) %></td> 
       </tr> 
       <tr> 
        <td><label for="txtHireDate">Hire Date:</label></td> 
        <td><%=Html.TextBox("txtHireDate",string.Format("{0:d}",user.HireDate)) %></td> 
       </tr> 
       <tr> 
        <td><label for="txtReleaseDate">Release Date:</label></td> 
        <td><%=Html.TextBox("txtReleaseDate",string.Format("{0:d}",user.ReleaseDate)) %></td> 
       </tr> 
      </table> 
     </fieldset> 
     <input type="submit" value="Save Changes" />  
</form> 

Ce formulaire itinéraires à une méthode Enregistrer dans ma EditController. Voici le code pour mon EditController méthode Save:

public class EditController : Controller 
    { 

     public ActionResult Save() 
     { 
//Save code goes here 
      } 

J'ai essayé d'utiliser la balise form html, ainsi que le code d'aide Html:

using (Html.BeginForm("Save", "Edit")) 

Voici l'entrée de ma méthode RegisterRoutes dans la Global.asax file:

routes.MapRoute("EditSave", "{controller}/Save", 
        new { controller = "Edit", action = "Save" }); 

Quoi que je fasse, le bouton d'envoi ne déclenche pas la méthode Save. Pourtant, si je saisis manuellement l'URL, le code se décompose directement dans la méthode Save.

Editer: Par le commentaire de Craig Stuntz, j'ai vérifié la source de la page. La page contient en fait 2 formes, bien que seulement 1 est codé sur la page par moi-même: Voici le code HTML qui apparaît avant mon balise form:

<form name="aspnetForm" method="post" action="44" id="aspnetForm"> 
<div> 
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNjM3OTAyNTUzZGQrHhVn9+t78aHxN0vHvKUJ8DQWlQ==" /> 
</div> 

       <div id="nav"> 
        <span id="navLinks"> 
         <a href="#">Placeholder Link</a> 
        </span> 
        <span id="userName"> 
         <span id="ctl00_lblUserName" class="UserName">Welcome, Test User</span> 
        </span> 
       </div> 

       <div id="Content"> 


    <div id="formContainer"> 

      <form action="Edit/Save" method="post"> 

Je ne pensais pas MVC généré viewstate ou balises de formulaire supplémentaires. Je tire les données et les remplit dans cette forme en utilisant une autre méthode du même contrôleur. Est-ce que je fais quelque chose de mal ici?

+0

Quelle URL de formulaire se trouve dans le HTML rendu (dans le navigateur)? –

+0

Bonne capture Craig !! – Perpetualcoder

Répondre

1

Ok, j'ai la réponse. Et merci Craig de m'avoir fait revoir le HTML! Ma page maîtresse avait généré une balise de formulaire sans que je le sache, donc j'avais essentiellement des formulaires imbriqués sur la même page. Après avoir supprimé le formulaire de la page principale, tout a parfaitement fonctionné.

Questions connexes