2013-03-01 60 views
2

正在爲DotNetNuke 7開發一個模塊。我希望能夠上載目錄中條目的縮略圖。有管理地方控制在我的模塊的編輯視圖和上傳,並選擇但文件時我建項目,我得到以下錯誤:dnn filepickeruploader控制

C:\dnn\dotnetnuke\DesktopModules\EventCatalog\Edit.ascx.designer.cs(103,38,103,41): error CS0234: The type or namespace name 'Web' does not exist in the namespace 'DotNetNuke' (are you missing an assembly reference?)

我也想不出如何讓在後臺選定的文件將網址保存到數據庫。當我輸入控件的ID時,VS會識別它,但智能感知不會提供任何線索作爲可能的選項。

任何人都可以告訴我如何解決上述錯誤,並且如果可能的話,指向我對這個控件的概述/教程。已經做了相當數量的谷歌搜索,但沒有發現任何東西。

回答

1

好吧,首先,您可能需要將DotNetNuke.Web的程序集引用添加到您的項目中。一旦在那裏,它可能也會幫助你解決缺乏智能感知的問題。

看起來您與所選URL進行交互的主要方式是通過FileID屬性。控制器本身將管理將文件保存到選定的FolderPath(這可能或不可能是用戶可以更改的東西)。

但是,你說的沒錯,如何使用控件沒有很好的資源。最好的「教程」可能是通過DotNetNuke核心代碼來查看核心如何使用該控件。

+0

謝謝,需要添加DotNetNuke.Web程序集,然後將其包含在代碼中。然後Intellisense幾乎引導您完成剩下的任務。 – HuwD 2013-03-06 12:59:51

0

內置的dnn上傳控件是專門爲將文件上傳到dnn文件系統而設計的 - 但說實話,它的工作起來相當醜陋。

它對你想對文件做什麼做了很多假設,並且作爲其過程的一部分自動在dnn文件系統索引中註冊新文件。

它對於縮略圖上傳或任何這樣的花哨的東西也不是很理想 - 因爲它沒有文件大小管理或縮放和裁剪的能力 - 它已經承諾了幾次,但迄今還沒有結果。

最重要的是,當它涉及到它實際存儲上傳文件的位置時,它有一點自己的想法 - 這意味着您最好查看可以更容易控制的第三方上傳器。

FWIW - 每個dnn安裝都安裝了telerik asyn上傳庫的完整版本 - 您需要手動設置它,但這並不困難。

​​是標記的基本結構及其功能上等同於<telerik:RadAsyncUpload></telerik:RadAsyncUpload>

其記錄在這裏http://www.telerik.com/help/aspnet-ajax/asyncupload-overview.html

說了這麼多,如果你想堅持DNN的文件選擇器 - 此代碼會讓你找到也是上傳文件的文件對象。

String thisURL = ""; 
String thisPHYSICAL = ""; 
Int32 itest001 = thisControl001.FileID; 
if (itest001 > 0) 
{ 
    var thisFILE = (DotNetNuke.Services.FileSystem.FileInfo)FileManager.Instance.GetFile(itest001); 
    thisURL = FileManager.Instance.GetUrl(thisFILE); 
    thisPHYSICAL = thisURL.PhysicalPath; 
} 

thisURL將包含相對於你的網站域名 thisPHYSICAL一個網址將包含您的服務器上的文件的物理位置。