Pergunta

Estou passando algumas informações do modelo para um ActionLink, mas também gostaria de fornecer à ação os valores de algumas entradas na página. Por exemplo, se eu tivesse algo assim:

<input Name="MyInput" />

<%: Html.ActionLink("MyAction", "MyController", Model.Value);

Eu gostaria que a ação esteja ciente de ambos o modelo. Normalmente, eu usaria uma forma de forma, mas não posso nesse caso, pois não estou enviando um envio.

Então, como posso passar o valor do myInput para o MyAction? Eu teria que adicionar uma propriedade chamada MyInput ao meu modelo? Supondo que isso funcione, existe uma maneira mais fácil, ou pelo menos uma que não envolva a modificação do modelo?

Foi útil?

Solução

Não há como fazer isso no HTML, portanto, não há uma maneira de fazer isso no ASP.NET MVC.

Existem duas soluções possíveis para isso que você pode escolher:

  1. Use JavaScript de modo que, quando o usuário editar a caixa de texto, você altera dinamicamente o valor da tag âncora para incluir o que eles digitaram. Você não pode usar o roteamento do ASP.NET para isso, porque isso é executado no servidor e você precisa de código do lado do cliente.

  2. Faça um formulário Envie em vez de um link. Esta é a maneira recomendada no HTML. Quando o usuário está enviando dados, ele deve estar em um formulário. Enrole tudo em uma tag de formulário e coloque a caixa de texto e um botão lá. Defina a ação do formulário como o URL para o qual você deseja postar.

Esta é a mesma resposta que eu coloquei essa questão, embora o perguntador da outra pergunta possa ter tido uma idéia um pouco diferente.

Outras dicas

Determinei que provavelmente poderia ter lido os valores da caixa de texto via JavaScript (eu provavelmente teria usado o jQuery) e passou por parâmetros como parte de um tipo anônimo (em vez de apenas usar o Model.value). No entanto, decidi mudar de usar um link de ação para apenas fazer um formulário enviar e usar o FormCollection. Fazia mais sentido com a página que eu estava construindo.

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