2012-10-02 99 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