如何让DotNetNuke 6.2 Service Framework模型化json数据

时间:2012-10-02 07:36:09

标签: json asp.net-mvc-2 dotnetnuke model-binding

DotNetNuke Serviceframework基于ASP.NET MVC 2,因此不包括开箱即用的json模型绑定。

我尝试了很多方法:

  • MVC3 jsonvalueprovider
  • 自定义json模型绑定器
  • 自定义价值提供商

调用注册这些代码的代码,但是没有调用这些对象本身的方法。

在DotNetNuke中注册这些本身就是一个有趣的领域,我们无法访问global.asax文件。

我还试图在控制器中反序列化请求输入流,但我在那里得到一个nullreferenceexception,并且我得到了正确的数据大小,但是所有的空值!

有什么想法吗?!

2 个答案:

答案 0 :(得分:1)

确定,

我有一个干净且功能齐全的解决方法。

我正在使用来自here的jquery插件。这会将json转换为标准表格形式的帖子。 用jquery&淘汰赛看起来像这样:

 $.ajax({ 
       url: '<%= ModulePath %>Api/Register/Search', 
       type: 'POST',  
       data: $.toDictionary(ko.mapping.toJS($root),"",true), 
       success: function (data) { //do something });

让问题保持开放,以防任何人有任何想法让json直接工作。

答案 1 :(得分:0)

您需要注册一个JSON值提供程序才能使其正常工作。有关详细信息,请参阅http://haacked.com/archive/2010/04/15/sending-json-to-an-asp-net-mvc-action-method-argument.aspx

注册价值提供者的最佳方式是在路线映射器中执行此操作。务必保护注册以确保它只发生一次,因为路由映射器偶尔会被调用一次。如果要在部署到服务器的模块中执行此操作,则无法控制您应该检查工厂集合的内容,以确保没有其他服务已经注册了值提供程序。

DNN 7中的服务框架基于WebAPI并且原生支持JSON,因此这种麻烦很快就会消失。