次の問題があります。
ボタンクリックで、サーバーにデータを POST します。私のコントローラーのアクションは次のようになります。
public ActionResult Accept(List<MyViewModel> entries)
{
//here entries HAS 2 MyViewModel-Instances in it.
//The entries are not null, but the values of the instances are!
//entries[0].ParamA is null
}
MyViewModel は次のようになります。
public class MyViewModel
{
public string ParamA { get; set; }
public string ParamB { get; set; }
}
AJAX-Call は次のとおりです。
var myEntries = { entries: [{ ParamA: "A", ParamB: "B" }, { ParamA: "C", ParamB: "D" }] };
$.ajax({
type: 'POST',
url: url,
cache: false,
data: myEntries,
dataType: 'text' });
私がすでにやろうとしたこと:
- dataType を「json」に変更しました
- 使用: 伝統的: 真
- var myEntries = JSON.stringify(...); を試しました
- var myEntries = { エントリ : [JSON.stringify({ ... }), JSON.stringify({ ... })] }; を試しました。
- 上記と同じですが、jQuery.param(..., true); を使用します。
- リストの代わりに IEnumerable または MyViewModel[] を使用します。
- 上記の任意の組み合わせ
ここで何が間違っていますか?
私を助けてくれてありがとう!
編集
私の (Razor)View は、何の関係もないので、現時点では興味深いものではありません。myEntries-Variable を埋めるために HTML.TextBoxFor (または類似の) メソッドを使用していません。実際には動的に満たされます(多くの条件があるため)。質問(および私自身のテスト)のために、変数をハードコーディングしました。:)