como verificar qual evento causou o posto de volta em asp.net mvc aplicativo
-
13-09-2019 - |
Pergunta
Eu tenho uma exibição e um controlador no meu MVC aplicativo ASP.net.
Eu tenho um botão "Enviar" e um botão "Cancelar" na minha opinião.
Quando eu clicar em qualquer um botton abaixo ação será desencadeada.
AcceptVerbs (HttpVerbs.Post)
Resultado ActionResult público ()
{
}
Agora, a pergunta é como eu vai saber no meu resultado ActionResult público (), seja posto de volta causado por causa de "Enviar" ou "Cancelar" ??
Solução
Você pode tentar como
function OnBeginRequest(sender, args) {
var postBackElement = args.get_postBackElement();
if ((postBackElement.id == '<%= btnSave.ClientID %>')
{
}
}
Outras dicas
Você poderia resolver o problema com as seguintes etapas:
i. Coloque um campo oculto chamado 'cancelar' na forma em seu ponto de vista. Dê-lhe um valor padrão de false .
ii. No evento onclick para o botão cancelar, adicione o seguinte script:
document.getElementById('cancel').value = true; document.getElementById('myForm').submit();
Change 'myForm' para ser o nome do seu formulário.
iii. Alterar a assinatura do método para Resultado () para o seguinte:
public ActionResult Result(bool cancel)
Através de ligação modelo, o valor de seu campo oculto 'cancelar' estará acessível na assinatura do seu método de ação.
Obrigado pelas respostas. mais uma solução que eu tenho é,
public ActionResult Result()
{
if (Request.Params.ToString().IndexOf("btnSubmit") > 0)
//
else
//
}
Gostaria de sugerir que o botão "cancelar" não deve enviar o formulário. Existem várias maneiras de lidar com isso, mas o mais simples seria a de ter evento de um javascript onclick no botão que navega de volta para a página anterior. (history.go(-1)
) Se isso não atender às suas necessidades, você também pode especificar uma rota específica para navegar. Mais complexa seria interceptar o clique no lado do cliente e decidir qual caminho a hit, mas eu normalmente só fazer isso se eu quiser ter vários botões de envio no formulário que vai bater ações diferentes, e isso é uma situação bastante rara.