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" ??

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top