Использование двух кнопок в форме вызова различных действий - PullRequest
1 голос
/ 17 февраля 2012

У меня есть форма на моей странице:

@using(Html.BeginForm("DoReservation","Reservation"))
{
...some inputs
<button id="recalculate">Recalculate price</button>
<button id="submit">Submit</button>
}

Когда я нажимаю кнопку «Пересчитать цену», я хочу, чтобы было выполнено следующее действие:

public ActionResult Recalculate(FormCollection form)
{
 var price = RecalculatePrice(form);
 ... do some price recalculation based on the inputs
return PartialView("PriceRecalculation",price);
}

Когда я нажимаю кнопку «Отправить», я хочу вызвать действие «DoReservation» (я хочу, чтобы форма была отправлена). Как мне достичь чего-то подобного?

1 Ответ

0 голосов
/ 17 февраля 2012

Я могу предложить добавить новое свойство к вашей модели представления и назвать его ActionType.

public string ActionType { get; set; }

и затем измените ваш файл cshtml, как показано ниже

 @using (Html.BeginForm())
    {
        <div id="mytargetid">    
                ...some inputs*@
        </div>
        <button type="submit" name="actionType" value="Recalculate" >Recalculate price</button>
        <button type="submit" name="actionType" value="DoReservation" >Submit</button>
 }

в методе после действия, основанном на значении ActionType, вы можете решить, что делать!

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

 @using (Ajax.BeginForm("DoProcess", new AjaxOptions { UpdateTargetId = "mytargetid", InsertionMode = InsertionMode.Replace }))

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

 public ActionResult DoProcess(FormModel model)
        {
            if (model.ActionType == "Recalculate")
            {
                return PartialView("Test");
                }
            else if (model.ActionType == "DoReservation")
            {
                return JavaScript(string.Format("document.location.href='{0}';",Url.Action("OtherAction")));


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