English 中文(简体)
将匿名类型传递给ASPNETMVC中的UpdateModel / TryUpdateModel
原标题:
  • 时间:2009-03-06 15:28:44
  •  标签:

给定以下控制器方法:

    [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);
    }

对象x未被TryUpdateModel方法正确更新,但mapInfo对象已被更新。

我的假设是TryUpdateModel方法不能处理到类似x的匿名类型的映射。

谢谢

Hal

最佳回答

“匿名类型”具有只读属性,因此TryUpdateModel没有公共设置可用于更改属性值。”

问题回答

匿名类型是不可变的,因此它们无法更新。

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





相关问题
热门标签