[解決済み] ASP.NET MVC Controllerにフォームを使わずに文字列の配列を投稿するにはどうすればよいですか?
2022-04-13 14:59:15
質問
ASP.NET MVCとJQueryを学ぶために小さなアプリを作っているのですが、ページの1つは項目のリストで、その中のいくつかを選択することができます。ボタンを押すと、JQueryのPost関数を使って、選択された項目のIDを含むリスト(または同等の何か)をコントローラに送信したいと思います。
選択された要素のIDを持つ配列を取得することができたので、今度はそれを投稿したいと思います。これを行う1つの方法は、hidden値を持つダミーフォームをページ内に作成し、選択されたアイテムをhidden値として設定し、そのフォームを投稿することです; しかし、これは残酷に見えます。
これを実現するために、配列を直接コントローラに送るという、よりすっきりした方法はないでしょうか?いくつか試してみましたが、コントローラは受信したデータをマップすることができないようです。以下は、これまでのコードです。
function generateList(selectedValues) {
var s = {
values: selectedValues //selectedValues is an array of string
};
$.post("/Home/GenerateList", $.toJSON(s), function() { alert("back") }, "json");
}
そして、私のコントローラは次のようになります。
public ActionResult GenerateList(List<string> values)
{
//do something
}
コントローラパラメータに"null"が入っているだけなのですが...。
何かヒントがあれば教えてください。
解決方法は?
私が行ったテストアプリのコードを含むように、私の応答を修正しました。
更新: jQuery を更新して 'traditional' 設定を true にしたので、これは再び機能します (@DustinDavis の回答による)。
まず、javascriptです。
function test()
{
var stringArray = new Array();
stringArray[0] = "item1";
stringArray[1] = "item2";
stringArray[2] = "item3";
var postData = { values: stringArray };
$.ajax({
type: "POST",
url: "/Home/SaveList",
data: postData,
success: function(data){
alert(data.Result);
},
dataType: "json",
traditional: true
});
}
そして、これが私のコントローラクラスでのコードです。
public JsonResult SaveList(List<String> values)
{
return Json(new { Result = String.Format("Fist item in list: '{0}'", values[0]) });
}
そのjavascript関数を呼び出すと、"First item in list.というアラートが表示されます。'item1'" と表示されます。 これがお役に立てれば幸いです。
関連
-
[解決済み] ASP.NETでJSONを単純なDictionary<string,string>にデシリアライズするにはどうすればよいですか?
-
[解決済み] ASP.NET MVC Frameworkで複数のサブミットボタンを処理する方法は?
-
[解決済み] ASP.NET MVCでenumからドロップダウンリストを作成するにはどうすればよいですか?
-
[解決済み] MVCで、文字列の結果を返すにはどうしたらいいですか?
-
[解決済み] ASP.NET MVCのビューを文字列としてレンダリングする方法は?
-
[解決済み] ASP.NET MVCコントローラは、Imageを返すことができますか?
-
[解決済み] JSONまたは部分的なhtmlを返すASP.NET MVCコントローラのアクション
-
[解決済み] ASP.NET MVCにおけるApiControllerとControllerの相違点
-
[解決済み] ASP.NET MVCでコントローラのメソッドをオーバーロードすることはできますか?
-
[解決済み] [Solved] ASP.NET MVCで404を適切に処理するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] jQueryです。簡単なオーバーレイを作成するにはどうすればよいですか?
-
[解決済み] セレクトした要素の外側のHTMLを取得する
-
[解決済み] Twitter Bootstrapのモーダルクローズに関数をバインドする
-
[解決済み] .on('click') と .click() の違いについて
-
[解決済み] 変更イベントでradioを使用するには?
-
[解決済み] チェックボックスがチェックされた場合のjQuery
-
[解決済み] JSONPとは何か、素人目にもわかるように説明してくれる人はいませんか?[重複)。
-
[解決済み] jQuery removeClass ワイルドカード
-
[解決済み】jQueryで入力不可属性をトグルする。
-
[解決済み] Jqueryのコードはヘッダーとフッターのどちらに入れるべきですか?