Vou demonstrar de uma forma bem simples como podemos trabalhar com mais de um botão do tipo Submit na mesma View, ressaltando que as requisições serão feitas para apenas uma Action.
Basicamente você precisa apenas definir os botões que a página possuir com o mesmo nome, diferenciando apenas o Value.
Vamos definir o seguinte Modelo para nossa View:
public class AcaoModel{ //Campos do Modelo public string Submit { get; set; }}
public
class
AcaoModel
{
//Campos do Modelo
string
Submit {
get
;
set
; }
}
Vou criar agora uma classe estática apenas para a exibição dos tipos de botões disponíveis:
public static class Botoes{ public const string Submit1 = "Submit1"; public const string Submit2 = "Submit2";}
static
Botoes
const
Submit1 =
"Submit1"
Submit2 =
"Submit2"
Nossa View vai possuir a seguinte estrutura:
<form action="/Home/Acao" method="post"> <%= Html.TextBox("campo1") %> <%= Html.TextBox("campo2") %> <%= Html.TextBox("campo3") %> <%= Html.TextBox("campo4") %> <button type="submit" name="Submit" value="<%= Botoes.Submit1 %>">Botão Submit 1</button> <button type="submit" name="Submit" value="<%= Botoes.Submit2 %>">Botão Submit 2</button> </form>
<
form
action
=
"/Home/Acao"
method
"post"
>
<%= Html.TextBox("campo1") %>
<%= Html.TextBox("campo2") %>
<%= Html.TextBox("campo3") %>
<%= Html.TextBox("campo4") %>
button
type
"submit"
name
"Submit"
value="<%= Botoes.Submit1 %>">Botão Submit 1</
value="<%= Botoes.Submit2 %>">Botão Submit 2</
</
E por fim em nosso Controller o seguinte código:
[HttpPost]public ActionResult Acao(AcaoModel model){ switch (model.Submit) { case Botoes.Submit1: //Lógica break; case Botoes.Submit2: //Lógica break; } return View();}
[HttpPost]
ActionResult Acao(AcaoModel model)
switch
(model.Submit)
case
Botoes.Submit1:
//Lógica
break
Botoes.Submit2:
return
View();
NOTA: Caso não deseje criar a propriedade Submit em seu Model, você pode obte-lo diretamente pelo controller com o código Request.Form["Submit"] Rafael Zaccanini MTAC – Microsoft Technical Audience Contributor Blog: http://www.rafaelzaccanini.net Twitter: @rafaelzaccanini Facebook: http://www.facebook.com/RafaelZaccaniniNet
Interessante