2

我正在为 DotNetNuke 7 开发一个模块。我希望能够为目录中的条目上传缩略图。在我的模块的编辑视图中管理位置控制并上传和选择文件但是当我构建项目时出现以下错误:

C:\dnn\dotnetnuke\DesktopModules\EventCatalog\Edit.ascx.designer.cs(103,38,103,41):错误 CS0234:命名空间 'DotNetNuke' 中不存在类型或命名空间名称 'Web'(您是否缺少装配参考?)

另外我不知道如何在后端获取所选文件以将 url 保存到数据库。当我输入控件的 ID 时,VS 会识别它,但智能感知没有提供任何线索作为可能的选项。

谁能告诉我如何解决上述错误,如果可能的话,请向我指出此控件的概述/教程。已经做了相当多的谷歌搜索,但没有找到任何东西。

4

2 回答 2

1

好吧,首先,您可能需要将对 DotNetNuke.Web 的程序集引用添加到您的项目中。一旦那里,它可能也会帮助你缺乏智能。

看起来您与所选 URL 交互的主要方式是通过FileID属性。控件本身将管理将文件保存到选定的文件FolderPath(用户可以更改也可以不更改)。

但是,您是对的,没有很好的资源来说明如何使用该控件。最好的“教程”可能是通过 DotNetNuke 核心代码查看核心如何使用控件。

于 2013-03-01T16:17:36.297 回答
0

内置的 dnn 上传控件是专门为将文件上传到 dnn 文件系统而设计的——但老实说,它很难使用。

它对您要对文件执行的操作做了很多假设,并且作为其过程的一部分,它会自动在 dnn 文件系统索引中注册新文件。

对于缩略图上传或任何此类花哨的东西,它也不是真正的理想选择——因为它没有文件大小管理或缩放和裁剪的能力——它已经被承诺过几次,但迄今为止还没有实现。

最重要的是,当涉及到实际存储上传文件的位置时,它有自己的想法 - 这意味着您最好查看可以更轻松控制的第 3 方上传器。

FWIW - 每个 dnn 安装都会安装完整版的 Telerik asyn 上传库 - 您需要手动设置它,但这并不难。

<dnn:DnnAsyncUpload></dnn:DnnAsyncUpload>是标记的基本结构,其功能等同于<telerik:RadAsyncUpload></telerik:RadAsyncUpload>

它记录在这里http://www.telerik.com/help/aspnet-ajax/asyncupload-overview.html

说了这么多,如果您确实想坚持使用 dnn 文件选择器 - 此代码也可以让您找到 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将包含相对于您的网站域的 url thisPHYSICAL将包含文件在您的服务器上的物理位置。

于 2013-04-06T08:55:04.843 回答