2009-05-15 4 views
6

私のASP.NET MVCアプリケーションでは、ユーザーがテキストボックスに値を追加してから、私のAjax.ActionLinkを押したがっています。私はこのような何かやりたい:テキストボックスの値をAjax.ActionLinkに渡すにはどうすればよいですか?

Ajax.ActionLink(「行く」、「アクション」、「コントローラー」、新しい{値= textbox1.value})

または、どのように他の私は、このテキストボックスの値を取得することができます私の行動に戻る? Jquery?

答えて

2

です:

<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呼び出しを行うコードを変更しました。必要な場合は、返されたActionResultをどのように処理するかを学ぶjQueryのドキュメントも見てください。 –

+0

この質問への回答(http://stackoverflow.com/questions/458055/jquery-mvc-user-controls)も役に立ちます。 –

1

これはあなたがAJAX $.get方法使用してアクションを実行することができるあなたはjQueryの

であなたのテキストボックスから値を取得する方法
var input = $('input[name=txt_MyTextBox]').val() 
+0

ありがとうございましたが、私は戻って私のサーバーコードにそのデータを取得しようとしている...私に私は戻ってサーバーにデータを渡す必要があることを意味していますJSONなどの方法で私は、asp.netがjavasciptに頼ることなくデータを取得するいくつかのトリッキーな方法があることを願っています。 – Whozumommy

+0

テキストボックスとそれに含まれるものはクライアント側であるため、これを実現するにはクライアントサイドスクリプトに頼る必要があります。ただし、Ajax呼び出しの代わりにフォームを送信してから、MVCがサーバー側で処理してください。 –

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> 

私のソリューションは、単にハードコードの代わりにASPを使用しようとのリンクにあります。 NET AJAXヘルパークラス。

0

$ .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" /> 
関連する問題