2012-03-04 6 views
0

私のページにはいくつかのフォームがあります。ここに1つの例があります。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());  
} 

のために私は更新がID以上を必要としているが、これらのフィールドは、フォームにし、中に含まれるべきと考えているコントローラ

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

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

にありますアクションの議論。

+0

私もそう信じています。なぜ私はメソッドにパラメータを追加しようとしているのですか?ラッピングの非常に良い方法..hmmm ..しかし、その効果を達成するためのよりきれいな方法はありますか? – BlackFire27

+0

また、これらの2つのフィールドもポストバックしたいと思っています... menu.Menus menu.Submenu..私はちょうどそれらを2回書き、各フォームに含めることはできません:( – BlackFire27

+0

これ以上の代替ソリューションはありませんか? – BlackFire27

関連する問題