在MVC3中,如果模型具有嵌套對象,是否可以自動將javascript對象綁定到模型?我的模型是這樣的:ASP.NET MVC3 JSON與嵌套類的模型綁定
public class Tweet
{
public Tweet()
{
Coordinates = new Geo();
}
public string Id { get; set; }
public string User { get; set; }
public DateTime Created { get; set; }
public string Text { get; set; }
public Geo Coordinates { get; set; }
}
public class Geo {
public Geo(){}
public Geo(double? lat, double? lng)
{
this.Latitude = lat;
this.Longitude = lng;
}
public double? Latitude { get; set; }
public double? Longitude { get; set; }
public bool HasValue
{
get
{
return (Latitude != null || Longitude != null);
}
}
}
當我發佈以下JSON到我的控制器一切,除了「座標」成功綁定:
{"Text":"test","Id":"testid","User":"testuser","Created":"","Coordinates":{"Latitude":57.69679752892457,"Longitude":11.982091465576104}}
這是我的控制器操作是這樣的:
[HttpPost]
public JsonResult ReTweet(Tweet tweet)
{
//do some stuff
}
我在這裏丟失了什麼,或者新的自動綁定功能只支持原始對象嗎?
刪除可爲空確實有效,但是由於發送空值會導致0,這是一個有效的經緯度值。猜猜唯一的方法是手動反序列化我的JSON。 – jul
我剛剛注意到,如果我把值放在引號中,它可以與可空屬性結合。當然,這肯定是一個錯誤? – jul
@jul:你是對的。我做了一些試驗,試圖使用自定義模型綁定器綁定你的動作(ActionResult InsertTweet([ModelBinder(typeof(TweetModelBinder))] Models.Tweet tweet))和值在那裏,在DictionaryValueProvider。 – LeftyX