ASP.NET MVC: несколько кнопок отправки с использованием Ajax.BeginForm

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

Для этой цели я создал Ajax.BeginForm и вставил в нее изображение и две кнопки отправки.

Могу ли я (должен ли я) иметь несколько кнопок отправки внутри Ajax.BeginForm?

Как контроллер обрабатывает каждый отдельный файл?

Ответ 1

Попробуйте это,

Просмотр

@model TwoModelInSinglePageModel.RegisterModel
@using (Ajax.BeginForm("DYmanicControllerPage", "Test", FormMethod.Post,null, new { id = "frmSignUp" }))
{ 
  <div>
                <input type="hidden" id="" name="hidden2" id="hdasd" />
                @Html.HiddenFor(m => m.hidden1)
                @Html.LabelFor(m => m.Name)
                @Html.TextBoxFor(m => m.Name)
                @Html.ValidationMessageFor(m => m.Name)
            </div>
            <br />
            <div>
                @Html.LabelFor(m => m.Address)
                @Html.TextBoxFor(m => m.Address)
                @Html.ValidationMessageFor(m => m.Address)
            </div>
            <br />
            <div>
                @Html.LabelFor(m => m.PhoneNo)
                @Html.TextBoxFor(m => m.PhoneNo)
                @Html.ValidationMessageFor(m => m.PhoneNo)
            </div>

 <input type="submit" value="Save"  id="btnSave" name="ButtonType"/>
 <input type="submit" value="Next"  id="btnNext" name="ButtonType" />


}

контроллер

  [HttpPost]
        public ActionResult DYmanicControllerPage(RegisterModel model,  string ButtonType)
        {
        if(ButtonType == "Next")
        {
            // Do Next Here
        }
        if (ButtonType == "Save")
        {
            //Do save here
        }
        return JavaScript("REturn anything()");

        }

Ответ 2

Я бы порекомендовал вам, что у вас две кнопки, а затем в зависимости от того, какая кнопка была нажата, вы можете установить действие в форме:

Бритва

$(function (){
    $("#btn-prev").click(function() {
        $("#form").attr
                   (
                      "action",
                      "@Url.Action("Action", "Controller", new {area="Area" })", 
                   ).submit();
    });
    $("#btn-next").click(function() {
        $("#form").attr
                   (
                      "action",
                      "@Url.Action("Action", "Controller", new {area="Area" })", 
                   ).submit();
    });
});

Я использую jQuery здесь, чтобы сделать это, но я думаю, что вы можете получить эту идею.

Ответ 3

У меня было то же требование/проблема, и я попробовал оба решения здесь, и они оба работают для меня. Мне нравится идея установить действие с помощью jquery при нажатии, чтобы я мог разделить свои действия, чтобы они могли использоваться другими представлениями.

ОДНАКО, я обнаружил, что, когда я это делаю, когда я отлаживаю, он публикует TWICE, и при этом запускаются OnSuccess и OnFailure. Это происходит только при отладке. Помните об этом при выборе.