2012-01-20 3 views
2

У меня есть вид бритвы с командой BeginForm и цикл внутри, в котором я создаю таблицу html с кнопкой отправки в каждой строке. Мой вопрос в том, когда я отправляю форму для определенной строки обратно на контроллер, как я могу убедиться, что знаю, к какой строке относится эта кнопка?Несколько кнопок отправки в форме вида Razor

Спасибо,

Сэчин

ответ

2

Что в моем уме, чтобы установить скрытый ввод перед отправкой формы с помощью яваскрипта функции.

При использовании JQuery это может быть STH так:

$("input:submit").click(function() { 
    $("hiddenInput").val(
     $(this).closest("input[name*='yourPrimaryKey']").val() 
    ); 
}); 

он находит значение входа, содержащего идентификатор строки, которая была нажата его кнопка.

0

Я использовал это решение от mkozicki, что отлично, так как на него не влияют проблемы локализации (некоторые другие методы зависят от значения кнопки, которая может измениться из-за локализации). How do you handle multiple submit buttons in ASP.NET MVC Framework?

EDIT: Если я отображение данных в таблице и просто хочу знать, какие строки я выбрал, я буду часто создавать форму HTML для каждой строки. Другими словами, есть внутри блок foreach, тогда каждая форма может содержать идентификатор, который передается контроллеру при обратной передаче. Это хорошо работает и очень просто.

2

В вашей петле просто укажите имя (например, отправленное) для кнопки отправки и установите ее значение для идентификации строки.

@using(Html.BeginForm()) 
{ 
    foreach(var row in myRows) 
    { 
     <input type="submit" name="submittedButton" value="@row.ID" /> 
    } 
} 

В контроллере определить строку аргумент, который это имя такое же, как подать имя кнопки (в данном примере submittedButton), как это:

[HttpPost] 
public ActionResult YourController(string submittedButton) 
{ 
    // submittedButton contains ID of selected row 
    return View(); 
} 
Смежные вопросы