代码之家  ›  专栏  ›  技术社区  ›  Hal

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

  •  2
  • Hal  · 技术社区  · 17 年前

    给定以下控制器方法:

        [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 回复  |  直到 17 年前
        1
  •  4
  •   Craig Stuntz    17 年前

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

        2
  •  3
  •   tvanfosson    17 年前

    Anonymous types 具有只读属性,因此没有可用于TryUpdateModel更改属性值的公共设置程序。

        3
  •  1
  •   Chad Moran    17 年前