Как я могу передать значение Textboxes моему Ajax.ActionLink? - PullRequest
6 голосов
/ 15 мая 2009

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

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

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

Ответы [ 4 ]

2 голосов
/ 15 мая 2009

Вы можете запустить действие, используя 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" />
2 голосов
/ 15 мая 2009

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

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

Мое решение, как вы можете видеть, состоит в том, чтобы просто жестко кодировать ССЫЛКУ, а не пытаться использовать вспомогательный класс ASP.NET AJAX.

1 голос
/ 15 мая 2009

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

var input =  $('input[name=txt_MyTextBox]').val()
0 голосов
/ 22 декабря 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" />
...