将匿名类型传递给ASPNETMVC中的UpdateModel / TryUpdateModel

时间:2009-03-06 15:28:45

标签: asp.net-mvc

给出以下控制器方法:

    [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这样的匿名类型。

谢谢,

哈尔

3 个答案:

答案 0 :(得分:4)

Anonymous types are immutable。因此,它们无法更新。

答案 1 :(得分:3)

Anonymous types具有只读属性,因此没有可供TryUpdateModel更改属性值的公共设置器。

答案 2 :(得分:1)

我猜是因为它正在寻找匿名类型的属性和反射的UpdateModel和TryUpdateModel可能有点不同。无论哪种方式,最简单的方法就是创建一个具体的类型。