私はC#とjavascriptに少し慣れていないので、私の質問は具体的ですが、他の方法を受け入れることができます。
メソッドで使用するために分離コードファイルに送信したい値の配列(javascript関数で作成したもの)があります。私がajaxを使用して調査し、JSONで配列を文字列化することは、最良の方法のように思われます。
私の質問は
このメソッドを使用して配列を渡すことはできますか?
サーバー側で(コードビハインドで)情報をキャプチャするにはどうすればよいですか?
値を渡す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;
}
ASP.NET MVCを使用してこの詳細な例を作成しましたが、WebFormsに簡単に適合させることができます。
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.
}
最も簡単な方法は、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/
WebページまたはWebサービスから[WebMethod]
メソッドを呼び出すには、次のガイドを確認してください。
http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/
基本的にはURLをServicePage.aspx/MethodName
にする必要がありますが