1

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

我尝试了多种方法:

  • MVC3 json值提供者
  • 自定义 json 模型绑定器
  • 自定义值提供者

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

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

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

有任何想法吗?!

4

2 回答 2

1

好的,

我有一个干净且实用的解决方法。

我正在使用这里的 jquery 插件。这会将 json 转换为标准表单表单。将其与 jquery & 淘汰赛一起使用如下所示:

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

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

于 2012-10-02T14:51:56.177 回答
0

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

注册值提供者的最佳方法是在您的路由映射器中进行。一定要保护注册以确保它只发生一次,因为路由映射器有时会被多次调用。如果您要在部署到您无法控制的服务器的模块中执行此操作,您可能应该检查 factory 集合的内容,以确保没有其他服务已经注册了 value provider。

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

于 2012-10-03T00:38:25.360 回答