让asp.net mvc的Action支持jQuery直接提交的javascript对象(8)
return null;
}
}
在做完上面的事情之后,我们就可以考虑把FormValueProviderFactory替换成为FormValueProviderFactoryEx了。
于是我们在Application_Start中,添加如下的代码:
for (int i = 0; i < ValueProviderFactories.Factories.Count; i++)
{
if (ValueProviderFactories.Factories[i] is FormValueProviderFactory)
{
ValueProviderFactories.Factories[i] = new FormValueProviderFactoryEx();
break;
}
}
现在我们再来测试之前的代码:
很高兴的看到,我们的值,已经正确的解析出来了!
我们再来测试传递一个对象:
$.post('/Test/PostTest', { obj: { Id: 1, Values: ['aa', 'bb', 'cc']} }, function (result) {
//TODO:
}, 'json');
我们把Action的代码也稍作修改:
[HttpPost]
public JsonResult PostTest( MyObject obj )
{
//TODO:
return Json( new { success = true });
}
MyObject的定义如下:
public class MyObject
{
public int Id { get; set; }
public string[] Values { get; set; }
}
如预想中的一样,我们得到了下面的结果:
OK,大功告成。
得于某种目的,上面的代码中有两处需要说明一下:
ArrayValueProviderResult 类中的
if (elementType == typeof(object))
{
Array.Copy(_Elements, array, l);
}
当数组类型为object[]时,复制把原始的ValueProviderResult过去了,这里看个人需要可自己修改。
PS:只是很肤浅的实现了这种直接使用jQuery来提交对象给asp.net mvc的支持,代码未做优化,未作任何合理性的设计。
如果有需要的猴子,可以参考自己实现一个。
摘自 滴水穿石
相关新闻>>
- 发表评论
-
- 最新评论 更多>>