我正在调用一个 MVC 控制器方法并将其传递给一个Entity
对象。在其他属性中,Entity
也有一个Contacts
属性。使用这种方法,控制器获取实体,以及实体中正确数量的联系人,但所有联系人的属性均为空。
这是原始方法:
$.post('/Home/Save', $.param(entity), SaveComplete);
使用强类型控制器:
public ActionResult Save(Entity entity)
这会导致每个Entity.Contact
都具有空属性:
并且 Fiddler 显示联系人被传递到服务器。
为了让控制器识别实体的联系人属性,我必须这样做:
JavaScript:
$.post('/Home/Save', { entityAsJson: JSON.stringify(entity) }, SaveComplete);
控制器方法:
public ActionResult Save(string entityAsJson)
{
try
{
Entity entity = JsonConvert.DeserializeObject<Entity>(entityAsJson);
// more code here
}
}
这很不幸,因为现在我的控制器采用字符串而不是强类型实体。有没有办法让第一个选项起作用,还是我需要对 JSON 进行字符串化?