2009-05-15 6 views
6

В моем приложении ASP.NET MVC я хочу, чтобы пользователь добавил значение в текстовое поле, а затем нажмите мой Ajax.ActionLink. Я хочу сделать что-то вроде этого:Как передать значение текстовых полей в Ajax.ActionLink?

Ajax.ActionLink ("Go", "Действие", "Controller", новый {значение = textbox1.value})

Или как еще я могу получить это значение текстового поля вернуться к моим действиям? Jquery?

ответ

2

Вы можете запустить действие с помощью AJAX $.get метод:

<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" /> 
+0

Это почти меня там ... но это не создает вызов AJAX, а скорее стандартную POST. – Whozumommy

+0

Я изменил код, чтобы позвонить AJAX. В случае необходимости посмотрите также документацию jQuery, чтобы узнать, как обработать возвращенный ActionResult. –

+0

Ответ на этот вопрос (http://stackoverflow.com/questions/458055/jquery-mvc-user-controls) также может быть полезен. –

1

это, как получить значение из вашего текстового поля в JQuery

var input = $('input[name=txt_MyTextBox]').val() 
+0

Спасибо, но я стараюсь, чтобы получить эти данные обратно в моем код сервера ... для меня это означает, что мне нужно, чтобы передать данные обратно на сервер через JSON или какой-либо другой метод. Я HOPING У asp.net есть какой-то хитрый метод для захвата данных без необходимости полагаться на javascipt. – Whozumommy

+0

Поскольку текстовое поле и то, что в нем находится на стороне клиента, вам нужно будет использовать скрипты на стороне клиента, чтобы это произошло. Исключением является то, что вместо того, чтобы делать вызов Ajax, вы отправляете форму, а затем MVC обрабатывает ее на стороне сервера для вас. –

2

Большое спасибо Alexander! Спасибо, что поставили меня на правильный путь. Я не пробовал ваш последний код, но я смог получить ваш предыдущий код. Вот рабочий код. Я уверен, что это все запутано, но, возможно, кто-то может показать мне более элегантное решение:

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

Мое решение, как вы можете видеть, это просто жестко закодировать LINK вместо того, чтобы использовать ASP. NET вспомогательный класс AJAX.

0

заменить $ .get (действие, данные); с $ ("# yourTargetId"). Load (действие, данные); вы получаете Аякс как в следующем примере:

<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" /> 
Смежные вопросы