私のアプリはクライアント側で JavascriptMVC を使用しており、ASP MVC は基本的に REST サービスとしてのみ機能しています。典型的なコントローラーメソッドは次のとおりです。
public JsonResult Update(CustomerDto dto)
{
var repository = Factory.NewCustomerRepository())
// ... Convert DTO back to entity and save changes
return Json(dto);
}
問題は、CustomerDTO に、フォーム データから本来あるべきオブジェクトに変換されていないプロパティが含まれていることです。たとえば、電話番号:
public class CustomerDto
{
public int Id { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public PhoneNumberDto[] PhoneNumbers { get; set; }
// ... more properties
}
public class PhoneNumberDTO
{
public int Id { get; set; }
public int CustomerId { get; set; }
public string Label { get; set; }
public string Number { get; set; }
}
コントローラー アクションでは、PhoneNumbers は配列内に正しい数の要素を持ちますが、各オブジェクトには null/既定値しかありません。リクエストが適切なフォーム データをすべて送信していることを確認しました。
Id 26
FirstName A
LastName Person
MiddleName Test
PhoneNumbers[0][CustomerID 26
PhoneNumbers[0][Id] 5
PhoneNumbers[0][Label] Mobile
PhoneNumbers[0][Number] (555)555-5555
PhoneNumbers[1][CustomerID 26
PhoneNumbers[1][Id] 8
PhoneNumbers[1][Label] Home
PhoneNumbers[1][Number] (654)654-6546
何が起こっているのかについてのアイデアはありますか? MVC3 がネストされたオブジェクトをフォーム値から自動的にマップできると考えるのは間違っていますか? 助けてくれてありがとう!