我的应用在客户端使用 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 将在数组中具有正确数量的元素,但每个对象将只有空值/默认值。我已经验证该请求正在发送所有适当的表单数据:
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 可以自动从表单值映射嵌套对象是错误的吗?谢谢你的帮助!