tags:

views:

272

answers:

3

Given the following controller method:

    [AcceptVerbs("POST","GET")]
    public ActionResult apiMapInfo()
    {
        var x = new { Lat = "", Long = "", Name = ""};
        var mapInfo = new DALServices.Models.MapInfo();

// Updates correctly

        TryUpdateModel(mapInfo);

// Does not update correctly

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

The object x is not updated correctly by the TryUpdateModel method, but the mapInfo object is.

My assumption is that the TryUpdateModel method doesn't handle mapping to an anonymous type like x.

Thanks,

Hal

+1  A: 

I'm guessing because UpdateModel and TryUpdateModel that it's looking for properties and reflection on anonymous types might be a bit different. Either way the easiest thing to do would just create a concrete type.

Chad Moran
+3  A: 

Anonymous types are immutable. Hence, they cannot be updated.

Craig Stuntz
+3  A: 

Anonymous types have readonly properties and thus there is no public settor available for TryUpdateModel to change the property value.

tvanfosson