10

私はC#とjavascriptに少し慣れていないので、私の質問は具体的ですが、私はあらゆる選択肢を受け入れています。

メソッドで使用するコード ビハインド ファイルに送信する値の配列 (JavaScript 関数で作成したもの) があります。私が調べたところ、ajax を使用して JSON で配列を文字列化するのが最善の方法のようです。

私の質問は

  1. このメソッドを使用して配列を渡すことはできますか?

  2. サーバー側で情報を取得するにはどうすればよいですか (コード ビハインドで?)

値を渡す Javascript

var jsonvalues = JSON.stringify(values);
var callback = window.location.href
$.ajax({
  url: callback
  type: "POST",
  contentType: 'application/json',
  data: jsonvalues
});

[WebMethod] または何らかの種類の WebService を使用してデータをキャプチャする多くのソリューションを見てきましたが、これを使用して、データを返さずにコード ビハインド ファイルで作業を行うことはできますか?

コードビハインドファイルで使用しているものは次のとおりです

[WebMethod]
public static void done(string[] ids)
{
String[] a = ids;
}
4

3 に答える 3

8

ASP.NET MVC を使用して詳細な例を作成しましたが、Web フォームに簡単に適用できます。

jquery を使用してデータを MVC コントローラーに送信する

HTML と jQuery は、WebMethod を呼び出す場所を除いて、ほとんど同じように見えます。

使用しているページが呼び出されDefault.aspx、メソッドが呼び出されDoneた場合、WebMethod の URL は になりますDefault.aspx/Done

<script>
       // Grab the information 
       var values = {"1,","2","3"};
       var theIds = JSON.stringify(values);

       // Make the ajax call
       $.ajax({
         type: "POST",
         url: "Default.aspx/Done", // the method we are calling
         contentType: "application/json; charset=utf-8",
         data: {ids: theIds },
         dataType: "json",
         success: function (result) {
             alert('Yay! It worked!');               
         },
         error: function (result) {
             alert('Oh no :(');
         }
     });
  </script>

あなたのWebMethod意志は今も変わりません。

[WebMethod]
public static void done(string[] ids)
{
   String[] a = ids;
   // Do whatever processing you want
   // However, you cannot access server controls
   // in a static web method.
}
于 2012-06-20T21:23:53.997 に答える
0

最も簡単な方法は、ASP.NETMVCとデータバインドを使用してリストにバインドすることです。したがって、文字列のリストの場合、これは非常に簡単です。次のようなコントローラーアクションを作成するだけです。

[HttpPost]
public ActionResult MyAction(string[] values)
{
    ... debug and see that values gets set to your array from javascript ...
}

その後data: values$.ajax電話をかけます。文字列化する必要はありません。jQueryが何をすべきかを判断します。より複雑なリストバインディングについては、これをチェックしてください(そして、複雑なオブジェクトリストにバインドするための素晴らしい方法について話しているような他の多くのリソース):

http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/

[WebMethod]WebページまたはWebサービスからメソッドを呼び出すには、次のガイドを確認してください。

http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/

基本的にはURLが必要ですがServicePage.aspx/MethodName

于 2012-06-20T16:08:23.333 に答える
-1

runat=serverを使用してデータを非表示フィールドに配置します。フォームを投稿し、通常どおりデータを取得します。

于 2012-06-20T21:11:14.700 に答える