У меня проблемы с отправкой формы для отправки в метод сохранения в контроллере. Я новичок в MVC и следил за несколькими примерами, чтобы попытаться заставить это работать. Вот моя разметка html:
<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>
Эта форма направляется к методу Save в моем EditController. Вот код моего метода Save EditController:
public class EditController : Controller
{
public ActionResult Save()
{
//Save code goes here
}
Я пробовал использовать тег формы html, а также вспомогательный код Html:
using (Html.BeginForm("Save", "Edit"))
Вот запись из моего метода RegisterRoutes в файле Global.asax:
routes.MapRoute("EditSave", "{controller}/Save",
new { controller = "Edit", action = "Save" });
Независимо от того, что я делаю, кнопка отправки не запускает метод сохранения. Тем не менее, если я вручную введу URL-адрес, код перейдет прямо в метод сохранения.
Редактировать: Согласно комментарию Крейга Стунца, я проверил источник страницы. Страница на самом деле содержит 2 формы, хотя только одна закодирована на странице мной: Вот HTML-код, который появляется перед моим тегом формы:
<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">
Я не думал, что MVC генерирует состояние просмотра или дополнительные теги формы. Я извлекаю данные и заполняю их в этой форме, используя другой метод того же контроллера. Я здесь что-то не так делаю?





Хорошо, получил ответ. И спасибо Крейгу за то, что заставил меня снова взглянуть на HTML! Моя главная страница сгенерировала в ней тег формы без моего ведома, поэтому у меня были вложенные формы на одной странице. После того, как я удалил форму с мастер-страницы, все заработало отлично.
Какой URL-адрес действия формы находится в обработанном HTML (в браузере)?