Как вы обрабатываете несколько кнопок отправки в 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, имеют в них одиночные кнопки.
- 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")
...
Внутри вашей формы.
В режиме просмотра код:
<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();
}
Мое решение состояло в том, чтобы использовать 2 панели asp:
<asp:Panel ID=".." DefaultButton="ID_OF_SHIPPING_SUBMIT_BUTTON"….></asp:Panel>
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();
}
}
- 1
- 2
Посмотрите другие вопросы по меткам html asp.net asp.net-mvc http-post form-submit или Задайте вопрос