【问题标题】:How can I pass a Textboxes value to my Ajax.ActionLink?如何将文本框值传递给我的 Ajax.ActionLink?
【发布时间】:2009-05-15 06:29:34
【问题描述】:

在我的 ASP.NET MVC 应用程序中,我希望用户将值添加到文本框中,然后按我的 Ajax.ActionLink。我想做这样的事情:

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

或者我怎样才能让这个文本框值回到我的操作中? jQuery?

【问题讨论】:

    标签: asp.net asp.net-mvc ajax actionlink


    【解决方案1】:

    您可以使用 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" />
    

    【讨论】:

    • 这几乎让我到了那里......但这不会创建 AJAX 调用,而只是一个标准的 POST。
    • 我已更改代码以进行 AJAX 调用。如果需要,还可以查看 jQuery 文档以了解如何处理返回的 ActionResult。
    • ofcoarse,我想我宁愿使用 jquery .load 方法但是
    【解决方案2】:

    非常感谢亚历山大!谢谢你让我走上正确的道路。我没有尝试你最新的代码,但我能够让你以前的代码正常工作。这是工作代码。我敢肯定这一切都很笨拙,但也许有人可以向我展示一个更优雅的解决方案:

                <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 帮助器类。

    【讨论】:

      【解决方案3】:

      这是在 JQuery 中从文本框中检索值的方式

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

      【讨论】:

      • 谢谢,但我正在尝试将数据返回到我的服务器代码……对我来说,这意味着我需要通过 JSON 或其他方法将数据传递回服务器。我希望 asp.net 有一些棘手的方法来获取数据,而不必依赖 javascipt。
      • 由于文本框和其中的内容位于客户端,因此您需要依靠客户端脚本来实现这一点。例外情况是,如果您不执行 Ajax 调用,而是提交表单,然后 MVC 在服务器端为您处理它。
      【解决方案4】:

      替换 $.get(action, data); 与 $("#yourTargetId").load(action, data); 你会得到一个 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" />
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-05
        • 1970-01-01
        • 2017-08-14
        • 2013-10-08
        • 2016-02-07
        • 2016-04-20
        相关资源
        最近更新 更多