我正在调用MVC控制器方法并将其传递给一个Entity
对象。在其他物业中,Entity
也有Contacts
财产。通过这种方法,控制器获取实体以及实体内的正确联系人数量,但所有联系人的属性均为空。MVC控制器属性无法识别参数的集合
这是原来的做法:
$.post('/Home/Save', $.param(entity), SaveComplete);
随着强类型的控制器:
public ActionResult Save(Entity entity)
这导致每个Entity.Contact
有空的属性:
而且提琴手显示该联系人s传递给服务器。
为了让控制器能够识别实体的联系人属性,我必须这样做:
的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串联起来?
检查[这里](HTTP://计算器。com/questions/5980389 /正确使用ajax-post-in-jquery-to-pass-model-from-strong-typed-mvc3-vie)。最有回报的答案... – 2013-03-02 20:23:01
@AliRızaAdıyahşi在这个答案中,您提出三个选项中的哪一个?原始问题不显示对象内的集合;只有主对象上的基本属性。 – 2013-03-02 20:29:22
你不应该需要'JsonConvert.DeserializeObject'。尝试简单地在客户端上执行json序列化,然后保持原样(IE:接受“实体”对象)。 Asp.NET MVC有它自己的jsonvalueprovider。如果这样不能解决问题,我记得有时候会看到,为了让MVC(3我觉得)能够与来自客户端的数组进行良好的交流,你必须跳过一些环节。 – Alxandr 2013-03-02 20:29:38