给出以下控制器方法:
[AcceptVerbs("POST","GET")]
public ActionResult apiMapInfo()
{
var x = new { Lat = "", Long = "", Name = ""};
var mapInfo = new DALServices.Models.MapInfo();
//正确更新
TryUpdateModel(mapInfo);
//无法正确更新
TryUpdateModel(x);
var svc = new APIServices.Services.ReturnMapInfo() {inputs = mapInfo};
svc.Run();
return new ObjectResult<Result>(new Result(svc.errorCode, svc.errorMessage, svc.results), svc.ExtraTypesForSerialization);
}
TryUpdateModel方法未正确更新对象x,但mapInfo对象为。
我的假设是TryUpdateModel方法不处理映射到像x这样的匿名类型。
谢谢,
哈尔
答案 0 :(得分:4)
Anonymous types are immutable。因此,它们无法更新。
答案 1 :(得分:3)
Anonymous types具有只读属性,因此没有可供TryUpdateModel更改属性值的公共设置器。
答案 2 :(得分:1)
我猜是因为它正在寻找匿名类型的属性和反射的UpdateModel和TryUpdateModel可能有点不同。无论哪种方式,最简单的方法就是创建一个具体的类型。