Как я могу передать значение Textboxes моему Ajax.ActionLink?

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

Ajax.ActionLink ("Go", "Action", "Controller", new {value = textbox1.value})

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


person Whozumommy    schedule 15.05.2009    source источник


Ответы (4)


Вы можете запустить действие, используя метод 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" />
person Alexander Prokofyev    schedule 15.05.2009
comment
Это почти приводит меня к цели ... но это не создает вызов AJAX, а просто стандартный POST. - person Whozumommy; 15.05.2009
comment
Я изменил код для вызова AJAX. В случае необходимости посмотрите также документацию jQuery, чтобы узнать, как обрабатывать возвращенный ActionResult. - person Alexander Prokofyev; 15.05.2009
comment
Ответьте на этот вопрос (stackoverflow.com/questions/458055/jquery-mvc -user-controls) также могут быть полезны. - person Alexander Prokofyev; 15.05.2009
comment
ofcoarse, я думаю, что лучше буду использовать метод jquery .load, однако - person John; 13.03.2012

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

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

person Whozumommy    schedule 15.05.2009

вот как вы получаете значение из текстового поля в JQuery

var input =  $('input[name=txt_MyTextBox]').val()
person Konstantinos    schedule 15.05.2009
comment
Спасибо, но я пытаюсь вернуть эти данные в свой серверный код ... для меня это означает, что мне нужно передать данные обратно на сервер через JSON или какой-либо другой метод. Я НАДЕЮСЬ, что у asp.net есть хитрый метод получения данных без использования javascipt. - person Whozumommy; 15.05.2009
comment
Поскольку текстовое поле и то, что в нем находится, находится на стороне клиента, вам нужно будет полагаться на скрипты на стороне клиента, чтобы это произошло. Исключением является то, что вместо вызова Ajax вы отправляете форму, а затем MVC обрабатывает ее на стороне сервера за вас. - person Mitch Baker; 15.05.2009

заменить $ .get (действие, данные); с $ ("# yourTargetId"). load (действие, данные); вы получите ajax, как показано ниже:

<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" />
person Community    schedule 22.12.2009