0

Razor ビューに JavaScript 配列があり、$.ajax を使用して MVC ビューからコントローラーの GET アクションを呼び出しています。ビューから渡された Javascript 配列を受け入れるコントローラー アクションのパラメーター タイプは何であるべきか。「オブジェクト」として保持しようとしましたが、「[オブジェクト]」としてのみ表示され、プロパティはまったく表示されません。これを達成する方法のアイデアはありますか?

4

2 に答える 2

3

配列内の値の型に完全に依存します。

次のように、整数の配列があるとします。

var intArray = [1,2,3,4]

次に、コントローラーで、List<int>パラメーターの型として a を使用します。コントローラーは、変換を理解するのに十分賢いです。

ただし、より高度なものが必要な場合は、次のようになると思います。

var customArray = [{hello: "world", foo: "bar"}]

次に、次のようなプロパティを使用しhelloて、.NET でカスタム オブジェクトを作成することをお勧めします。foo

public CustomObject {
   public string hello { get; set; }
   public string foo { get; set; }
}

次にCustomObject、またはList<CustomObject>をパラメーターの型として使用すると、コントローラーがプロパティをマップします...魔法のように。

于 2013-05-07T08:59:47.480 に答える
3

それをajaxに渡して追加するだけですtraditional: true,

var ids = [0,1,2,3];

$.ajax({
   url: '@Url.Action("SomeAction", "Home")',
   type: 'POST',
   traditional: true,
   data: { array: ids },
   ...

コントローラ

public ActionResult SomeAction(int[] array){}

オブジェクト配列の場合

var objs = JSON.stringify(your_objects);

$.ajax({
   url: '@Url.Action("SomeAction", "Home")',
   type: 'POST',
   data: { array: objs },
   ...

コントローラ

public ActionResult SomeAction(List<YourObjectType> array){}

ここをチェック

于 2013-05-07T08:59:58.470 に答える