2012-10-02 66 views
1

DotNetNuke的Serviceframework是基于ASP.NET MVC 2的JSON数据,因此不包括JSON modelbinding开箱。我怎样才能获得DotNetNuke的6.2服务框架,以modelbind

我已经尝试了多种方法:

  • MVC3 jsonvalueprovider
  • 定制JSON模型绑定
  • 自定义值提供商

注册这些被称为代码,但是这些对象本身的方法不被调用。

这些注册在自己作为DotNetNuke的一个有趣的领域,我们还没有获得Global.asax文件。

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

有什么想法?

回答

1

好的,

我有一个清洁和功能的解决方法。

我使用jQuery插件从here。这JSON转换成标准的形式形成后为您服务。 使用这种与jQuery &淘汰赛看起来是这样的:

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

离开的问题开放,如果任何人有任何想法,让JSON的直接合作。

0

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

注册价值提供者的最好方法是在你的路由映射器中完成它。一定要警惕注册,以确保它只出现一次,因为路线映射器偶尔会被多次调用。如果你打算在部署到服务器的模块中执行此操作,而不受控制,则应该检查工厂集合的内容以确保没有其他服务已经注册价值提供程序。

在7 DNN服务框架是基于的WebAPI,并原生支持JSON,所以这种麻烦会很快消失。

+0

正如我在质询时说,我曾尝试都使用MVC3 valueprovider,并且也是一种习俗valueprovider&valueproviderfactory。我试图在httpmodule中尝试注册路由映射器。注册代码被正确调用,但是valueprovider本身没有被调用... – stevenrcfox

+0

我们已经使用了我在DNN公司的几个内部项目中描述的技术。这不仅仅是一个猜测,我知道它的工作原理。 – ScottS

+0

我不怀疑它的工作原理,但是我无法让它工作。是否有任何其他配置/参考或6.02.03的已知问题可能会影响此? – stevenrcfox