Можно ли иметь более одной кнопки отправки в форме MVC Ajax и передать параметр? - PullRequest
0 голосов
/ 27 апреля 2018

Можно ли иметь более одной кнопки отправки для формы ajax в MVC? У меня есть форма, в которой я хотел бы иметь более одной кнопки отправки, а результат нажатия кнопки управляется условным оператором в контроллере.

Пожалуйста, рассмотрите следующий Ajax-код, который у меня есть в моем приложении. Это форма ajax, которая вызывает метод Create контроллера Car при отправке.

@using (Ajax.BeginForm("Create", "Car", new AjaxOptions {
    HttpMethod = "POST",
    OnSuccess = "NotifySuccess",
    OnFailure = "NotifyFailure" }))
{
    ..form code

    <button type="submit" data-option="no_add">Save &amp; Close</button>
    <button type="submit" data-option="yes_add">Save &amp; Add</button>
}

Как вы можете видеть, я уже добавил две кнопки отправки, мой план состоял в том, чтобы, используя атрибуты данных, я мог потенциально иметь условие в контроллере для определения результата.

Например, если вы нажмете Save & Close, вы просто вернетесь на страницу индекса, если вы нажмете Save & Add, вы попадете в другую форму, потенциально с определенным параметром option. Вот быстрый снимок моего метода создания в моем контроллере.

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Car car, string something)
{
    if(something = "whatever")
        try
            {
                if (ModelState.IsValid)
                {
                    unitOfWork.CarRepository.Insert(car);
                    unitOfWork.Save(); 
                    return RedirectToAction("Index");
                }
            }
            catch (DataException)
            {
              ...handle catch
            }
        return View(car);
    else {
        ...do something else
    }
}  

У меня проблема в том, что любой ввод типа submit просто отправляет форму. Возможно ли иметь более одной отправки и управления ими на уровне контроллера, основываясь, скажем, на параметре?

1 Ответ

0 голосов
/ 27 апреля 2018

В своих формах я делаю следующее:

<button type="submit" name="Action" value="SAVE" ..
<button type="submit" name="Action" value="DELETE" ..

И в моем контроллере:

public ActionResult Edit(string Action, MyViewModel model)

При нажатии кнопки только эта кнопка (при нажатии кнопки отправки) отправляет обратно значение через поле ввода «Действие». Поэтому, нажав кнопку «Сохранить», появляется сообщение «СОХРАНИТЬ» и т. Д. Таким образом, вы можете использовать этот параметр, чтобы определить, какое действие было инициировано. Это может быть опора для вашей модели, или это может быть, как это выглядит выше.

Я не использую форму AJAX, но она должна работать аналогично.

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