Como posso passar um valor de caixa de texto para o meu ajax.actionlink?
-
22-08-2019 - |
Pergunta
No meu aplicativo ASP.NET MVC, quero que um usuário adicione um valor em uma caixa de texto e pressione meu ajax.actionlink. Eu quero fazer algo assim:
Ajax.actionlink ("go", "ação", "controlador", new {value = textbox1.value})
Ou de que outra forma posso obter esse valor de caixa de texto de volta à minha ação? JQuery?
Solução
Você pode executar ação usando Ajax $ .get método:
<script type="text/javascript">
$(document).ready(function()
{
$("#t").change(function()
{
RunAction();
});
RunAction();
});
function RunAction()
{
var action = '<%= Url.Action("Action", "Controller") %>';
var data = $("#t").serialize();
$.get(action, data);
}
</script>
<input type="text" id="t" />
Outras dicas
Muito obrigado Alexander! Obrigado por me colocar no caminho certo. Não tentei o seu código mais recente, mas consegui fazer seu código anterior funcionar. Aqui está o código de trabalho. Tenho certeza de que tudo isso é estranho, mas talvez alguém lá fora possa me mostrar uma solução mais elegante:
<script type="text/javascript">
$(document).ready(function() {
$("#myVal").change(function() {
changeActionURL();
});
changeActionURL();
});
function changeActionURL() {
var url = '<%= new UrlHelper(ViewContext.RequestContext).Action("Action", "Controller") %>' + '?dup=' + $("#myVal").val();
$("#u").attr('href', url);
}
</script>
<a id="u" href="" onclick="Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: 'HellaYeah' });">Report Dupe</a>
</p>
<div id="response">not done</div>
Minha solução como você pode ver é apenas codificar o link, em vez de tentar usar a classe auxiliar ASP.NET AJAX.
É assim que você recupera o valor da sua caixa de texto no jQuery
var input = $('input[name=txt_MyTextBox]').val()
substituir $ .get (ação, dados); com $ ("#yourtargetId"). carregar (ação, dados); Você recebe um Ajax como no seguinte:
<script type="text/javascript">
$(document).ready(function()
{
$("#t").change(function()
{
RunAction();
});
RunAction();
});
function RunAction()
{
var action = '<%= Url.Action("Action", "Controller") %>';
var data = $("#t").serialize();
$("#yourTargetId").load(action, data);
}
</script>
<input type="text" id="t" />