Can't get ASP.NET MVC form to publish

I am having problems getting my form to submit to my Save method in a controller. I'm new to MVC and followed some examples to try and get this to work. Here is my html markup:

    <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>

      

This form is directed to the Save method in my EditController. Here is the code for my SaveController Save method:

    public class EditController : Controller
    {

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

      

I've tried using the html form tag as well as the Html helper code:

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

      

Here is an entry from my RegisterRoutes method in the Global.asax file:

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

      

No matter what I do, the submit button does not call the Save method. However, if I manually type in the URL, the code breaks directly into the Save method.

Edit: Per Craig Stuntz, I checked the source of the page. The page actually contains 2 forms, although only one code is encoded on the page: Here is the HTML that appears before my form tag:

<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">

      

I didn't think MVC was generating viewstate or additional form tags. I am fetching data and filling it into this form using a different method from the same controller. Am I doing something wrong here?

+1


source to share


1 answer


Ok, got the answer. And thanks to Craig for looking at the HTML again! My main page created a form tag in it without knowing it, so I had nested forms on the same page. After I removed the form from the homepage everything worked fine.



+1


source







All Articles