我希望能够发送JSON而不是标准的QueryStrings时,我的控制器在ASP.Net MVC的职位。我有前端的东西工作正常(建设,然后提交我的JSON对象)。ASP.Net MVC:发送JSON到控制器
问题出在控制器端,MVC框架附带的默认ModelBinders不支持这一点。
我已经看到了解决这个问题的方法的组合,其中之一就是应用一个将对象作为参数的过滤器,使用JSON库对其进行反序列化,并将其添加到操作参数中。这并不理想。
另一种更好的方法是使用自定义模型活页夹。我所见过的所有人都假设你只有一个模型,而这将是一个类而不是一个变量。如果你有多个它打破。
有没有其他人遇到过这个?我的一个想法是,如果我可以简单地重写MVC如何处理FormCollection并拦截它,将自己的值添加到集合中,并希望MVC可以以正常的方式完成其余部分。有谁知道这是否可能?
我认为关键的问题是我的问题不是绑定,因为我的视图模型与他们以前的方式没有什么不同。问题是从JSON Post获取值。
如果我是正确的MVC从QueryString中获取值并将其放入表单集合中,然后用于ModelBinding。所以不应该改变FormCollection被分配的方式吗?的动作的
实施例:
public ActionResult MyFirstAction(Int32 ID, PersonObject Person, ClassObject ClassDetails)
{
//etc
}
正常结合作品,JSON不和模型绑定的所有的例子将不能工作。到目前为止,我的最佳解决方案是将对象转换为字典,并通过每个参数循环并匹配它。看起来并不理想。
如果你打算投票,你可以解释为什么? – Damien 2010-01-27 12:18:07
对不起,不幸的是,当我去点击最喜欢的明星时,即使在我已经提出了投票意见之后,我不小心点击了投票(这就是为什么它从5到3)。现在它试图撤销我意外做的事情后立即表示,除非修改问题,否则改变我的投票已经太晚了。如果你对这个问题进行编辑,我会很乐意修复我的投票。 – jamesaharvey 2010-01-27 14:39:43
没问题!这也发生在我身上以及许多时候。 – Damien 2010-01-28 11:12:36