Несколько кнопок отправки в форме просмотра Razor - PullRequest
2 голосов
/ 20 января 2012

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

Спасибо,

Sachin

Ответы [ 3 ]

2 голосов
/ 21 января 2012

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

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

В вашем контроллере определите строковый аргумент, имя которого совпадает с именем кнопки отправки (в данном примере submitButton) следующим образом:

[HttpPost]
public ActionResult YourController(string submittedButton)
{
   // submittedButton contains ID of selected row
   return View();
}
2 голосов
/ 20 января 2012

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

Если вы используете jquery, это может быть что-то вроде этого:

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

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

0 голосов
/ 20 января 2012

Я использовал это решение из mkozicki , что здорово, поскольку на него не влияют проблемы с локализацией (некоторые другие методы зависят от значения кнопки, которое может измениться из-за локализации). Как вы обрабатываете несколько кнопок отправки в ASP.NET MVC Framework?

РЕДАКТИРОВАТЬ: Если я отображаю данные в таблице и просто хочу знать, какую строку яЯ буду часто создавать HTML-форму для каждой строки.Другими словами, есть Ajax.BeginForm внутри блока foreach, тогда каждая форма может содержать идентификатор, который передается контроллеру при обратной передаче.Это тоже хорошо работает и очень просто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...