2012-03-04 27 views
0

我的頁面上有幾個表單。這是一個例子。使用mvc3中的表單

 <table width="400px"> 
    @foreach (var menu in Model) 
    { 
    using (Html.BeginForm()) 
    { 
     <tr> 
     <td> 
      @menu.Menus 
     </td> 
      <td> 
     @menu.Submenu 
     </td> 
      <td> 
      <input type="submit" name="update" value="Update" />&nbsp;&nbsp;&nbsp; 
      <input type="submit" name="delete" value="Delete" /> 
      @Html.Hidden(@menu.MenuID.ToString()); 


     </td> 

     </tr> 
    } 
    } 

    </table> 

我希望我的每個動作都能被表單提交按鈕調用。所以一個動作將被調用,取決於是否有更新提交按鈕被按下,或按下刪除按鈕,或者是否按下了一個沒有名稱屬性的按鈕......我也希望我的表單只能發佈。 我該如何實現這一切?

回答

1

在視圖中用各自的窗體包裝每個按鈕。例如,對於更新

@using (Html.BeginForm("Update","Home")) 
{ 
@Html.Hidden(menu.MenuID.ToString());  
} 

@using (Html.BeginForm("Delete","Home")) 
{ 
@Html.Hidden(menu.MenuID.ToString());  
} 

對於每一個動作你必須在控制器

[HttpPost] 
public ActionResult Update(int id) 
{ 
    //do stuff 
} 

[HttpPost] 
public ActionResult Delete(int id) 
{ 
    //do stuff 
} 

我相信雖然更新需要比一個id多,這些領域應該包括在形式和在行動的論點。

+0

我也這麼認爲。 ..這就是爲什麼我要爲該方法添加更多參數。非常好的包裝方式..但是,有沒有更完整的方式來實現這一效果? – BlackFire27 2012-03-04 15:10:09

+0

另外,我希望這兩個領域也回來了... menu.Menus menu.Submenu ..我不能只寫他們兩次,並在每個形式包括:( – BlackFire27 2012-03-04 15:14:09

+0

任何替代解決方案是整潔? – BlackFire27 2012-03-04 15:19:36