角度を使用してmvcコントローラーにファイルをアップロードしようとしていますが、すべて正常に動作します。すべてのメンバはListの型であるメンバーを除いてmvcによってバインドされます。ここFormData()をmvcコントローラーに使用して配列jsonオブジェクトを送信
は私のDTO
public class UpdateMeetingInput
{
public Guid Id { get; set; }
public string Subject { get; set; }
public DateTime Date { get; set; }
public DateTime EndTime { get; set; }
public string Description { get; set; }
public string Agenda { get; set; }
public bool IsCancelled { get; set; }
public List<AttendeeDto> Attendees {get;set;}
public string Location { get; set; }
}
、ここでは私のjavascriptファイル
var fd = new FormData();
for (var key in meeting) {
// i will add attendees later
if (key != "attendees") {
fd.append(key, meeting[key])
}
}
fd.append('attendees', JSON.stringify(meeting.attendees));
$http.post("/meeting/update", fd, {
headers: { 'Content-Type': undefined }
})
、ここでは私のコントローラ
public class MeetingController : TransitControllerBase
{
private readonly IMeetingManager _meetingManager;
private readonly IRepository<Meeting, Guid> _meetingRepository;
private readonly IRepository<Decision> _decisionRepository;
private readonly UserManager _userManager;
public MeetingController (IMeetingManager meetingManager, IRepository<Meeting, Guid> meetingRepository, IRepository<Decision> decisionRepository, UserManager userManager)
{
_meetingManager = meetingManager;
_meetingRepository = meetingRepository;
_decisionRepository = decisionRepository;
_userManager = userManager;
}
[HttpPost]
public async Task Update (UpdateMeetingInput input)
{
であるである私はrerquest.form.getvalueを使用して参加者の値を見て( "出席者")と私は正しいですが、次の文字列を取得しますが、私はなぜmvcがそれをバインドできないのか分からない
"[{\"userId\":0,\"name\":null,\"role\":\"4\",\"email\":\"[email protected]\",\"isGuest\":false,\"$$hashKey\":\"object:311\"}]"
私はデータの投稿に間違っていますか?あなたはフォームデータ、ない JSONを使用しているが、JSON.stringifyは、モデルバインダーは、期待するものではありませんJSONとしてあなたのリストを、フォーマットしているためだ
私はJSONからコントローラーで明示的に逆シリアル化します。 – Arash