フォームデータをシリアル化して、余分なオブジェクトオブジェクトを追加しています。複雑なオブジェクトがシリアル化された配列に追加されました。サーバー側で常にnullです。
のjQueryコード:
....
var users= getUsers();
var formData = $("#form").serializeArray();
formData.push({ name: 'Users', value: users});
$.ajax({
url: "/ControllerName/ViewName",
type: "POST",
contentType: "application/x-www-form-urlencoded; charset=UTF-8"
data: formData
});
....
function getUsers() {
var users= [];
users.push(new Object({
Name: "User 1",
}));
return users;
}
C#モデル
public class File
{
public string Name { get; set; }
public int Id { get; set; }
public List<Users> Users { get; set; }
}
public class Users
{
public string Name { get; set; }
}
呼び出しがサーバー側のコントローラのアクションをヒットすると、ユーザーリストは、(0のカウント)常に空です。私はストリンジェライズし、Jsonとして送信しようとしましたが、それはどちらも助けになりませんでした。私はサーバー側でASP.NET MVC 5を使用しています。
私は間違っていますか?
編集 私は(この場合はユーザーに)FORMDATAへのオブジェクトのリストをプッシュしようとしているとのトラブルを抱えています。ブール値をプッシュすると、サーバ側でデシリアライズされます。
へfiddle
編集
変更
data: formData
は引数に 'contentType'プロパティを設定してみてくださいされ、' $ .ajax'に渡されるオブジェクト。 –また、あなたの 'getUsers'関数では、' users.push({Name: "User 1"}) ' –
@MichaelLを実行するだけで' new Object'を実行する必要はありません。私は "application/x-www-form-urlencoded"のcontentTypeを使用しています。サンプルを更新します。 – Kaladin