Как вы обрабатываете несколько кнопок отправки в ASP.NET MVC Framework?

Есть ли простой способ обработки нескольких кнопок отправки из одной формы? Пример:

<% Html.BeginForm("MyAction", "MyController", FormMethod.Post); %>
<input type="submit" value="Send" />
<input type="submit" value="Cancel" />
<% Html.EndForm(); %>

Любая идея, как это сделать в бета-версии ASP.NET Framework? Все примеры, которые я искал в Google, имеют в них одиночные кнопки.

+611
источник поделиться
34 ответа
  • 1
  • 2

Используйте специальный помощник (создайте файл "Helpers.cshtml" внутри папки App_Code в корне вашего проекта) с javascript, чтобы переписать (при событии "onclick" ) атрибут формы "действие" для чего-то, что вы хотите и затем отправьте его.

Помощник может быть похож:

@helper SubmitButton(string text, string controller,string action)
{   
    var uh = new System.Web.Mvc.UrlHelper(Context.Request.RequestContext);
    string url = @uh.Action(action, controller, null);   
    <input type=button  onclick="(
                                       function(e)
                                                 {
                                                   $(e).parent().attr('action', '@url'); //rewrite action url
                                                   //create a submit button to be clicked and removed, so that onsubmit is triggered
                                                   var form = document.getElementById($(e).parent().attr('id'));
                                                   var button = form.ownerDocument.createElement('input');
                                                   button.style.display = 'none';
                                                   button.type = 'submit';
                                                   form.appendChild(button).click(); 
                                                   form.removeChild(button);              
                                                  }
                                      )(this)" value="@text"/>
}

И затем используйте его как:

@Helpers.SubmitButton("Text for 1st button","ControllerForButton1","ActionForButton1")
@Helpers.SubmitButton("Text for 2nd button","ControllerForButton2","ActionForButton2")
...

Внутри вашей формы.

0
источник

В режиме просмотра код:

<script language="javascript" type="text/javascript">
    function SubmeterForm(id)
    {
        if (id=='btnOk')
            document.forms[0].submit(id);
        else
            document.forms[1].submit(id);
    }
</script>


<% Html.BeginForm("ObterNomeBotaoClicado/1", "Teste01", FormMethod.Post); %>
<input id="btnOk" type="button" value="Ok" onclick="javascript:SubmeterForm('btnOk')" />
<% Html.EndForm(); %>
<% Html.BeginForm("ObterNomeBotaoClicado/2", "Teste01", FormMethod.Post); %>
<input id="btnCancelar" type="button" value="Cancelar" onclick="javascript:SubmeterForm('btnCancelar')" />
<% Html.EndForm(); %>

В контроллере код:

public ActionResult ObterNomeBotaoClicado(string id)
{
    if (id=="1")
        btnOkFunction(...);
    else
        btnCancelarFunction(...);
    return View();
}
-1
источник
другие ответы

Связанные вопросы


Похожие вопросы

Мое решение состояло в том, чтобы использовать 2 панели asp:

<asp:Panel ID=".." DefaultButton="ID_OF_SHIPPING_SUBMIT_BUTTON"….></asp:Panel>

-2
источник

Index.cshtml

@using (Html.BeginForm( "Index", "Home", FormMethod.Post, new {id = "submitForm" }))

{

button type = "submit" id = "btnApprove" name= Значение "Команда" = "Утвердить" > Утвердить

button type = "submit" id = "btnReject" name= Значение "Команда" = "Отклонить" > Отклонить

}

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Index(FormCollection frm, string Command)
    {
        if (Command == "Approve")
        {

        }
        else if (Command == "Reject")
        {

        }

        return View();
    }

}
-3
источник
  • 1
  • 2

Посмотрите другие вопросы по меткам или Задайте вопрос