2008-12-23 76 views
1

我有問題讓我的窗體發佈到我的保存方法在控制器中。我是MVC的新手,並且已經遵循了幾個示例來嘗試實現這一點。這是我的HTML標記:無法獲得ASP.NET MVC窗體發佈

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

此表單路由到我的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" }); 

無論我做什麼,提交按鈕都不會觸發Save方法。然而,如果我手動鍵入Url,代碼就會直接進入Save方法。

編輯: Per Craig Stuntz的評論,我檢查了頁面的來源。該頁面實際上包含2種形式,雖然只有1編碼通過自己的網頁上:這是之前我的表單標籤出現的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生成視圖狀態或另一種形式的標籤。我正在使用來自同一控制器的另一種方法提取數據並將其填充到此表單中。我在這裏做錯了什麼?

+0

呈現的HTML(瀏覽器中)中的表單動作URL是什麼? – 2008-12-23 19:29:55

回答

1

好的,得到了​​答案。並感謝克雷格讓我再次看看HTML!我的母版頁在我不知道它的情況下生成了一個表單標籤,所以我基本上在同一頁面上嵌套了表單。從Master Page中刪除表單後,所有內容都可以正常工作。