2012-03-04 4 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 
} 

Я считаю, хотя обновление требует больше, чем идентификатор, эти поля должны быть включены в форме и в аргументы действия.

+0

Я тоже так считаю. .. Вот почему я собираюсь добавить дополнительные параметры в метод. Очень хороший способ обертывания ... мммм ... но есть ли более аккуратный способ добиться этого эффекта? – BlackFire27

+0

Кроме того, я хочу, чтобы эти два поля были снова отправлены ... menu.Menus menu.Submenu..I не могу просто написать их дважды и включить в каждую форму :( – BlackFire27

+0

Любые альтернативные решения, которые являются более аккуратными? – BlackFire27

Смежные вопросы