为DotNetNuke 7开发模块。我希望能够为目录中的条目上传缩略图。在我的模块的编辑视图中管理位置控制并上传和选择文件但是当我构建项目时,我收到以下错误:
C:\ dnn \ dotnetnuke \ DesktopModules \ EventCatalog \ Edit.ascx.designer.cs(103,38,103,41):错误CS0234:命名空间“DotNetNuke”中不存在类型或命名空间名称“Web”(你错过了装配参考吗?)
此外,我无法弄清楚如何在后端获取所选文件以将URL保存到数据库。当我输入控件的ID时,VS会识别它,但intellisense不会提供任何线索作为可能的选项。
任何人都可以告诉我如何修复上述错误,如果可能的话,请指出我对此控件的概述/教程。已经做了相当多的谷歌搜索,但没有找到任何东西。
答案 0 :(得分:1)
嗯,首先,您可能需要将DotNetNuke.Web的程序集引用添加到项目中。一旦那样,它也可能有助于你缺乏智力感知。
看起来您与所选网址互动的主要方式是通过FileID
媒体资源。控件本身将管理将文件保存到选定的FolderPath
(可能是也可能不是用户可以更改的内容)。
但是,你是对的,没有很好的资源来使用控件。它可能是通过DotNetNuke核心代码查看核心如何使用控件的最佳“教程”。
答案 1 :(得分:0)
内置的dnn上传控件专门用于将文件上传到dnn文件系统 - 但说实话,它非常难以使用。
它对你想要对文件做什么做了很多假设,并且作为其过程的一部分自动在dnn文件系统索引中注册新文件。
它对于缩略图上传或任何此类花哨的东西来说也不是很理想 - 因为它没有文件大小管理或缩放和裁剪的功能 - 它已被承诺了几次但迄今为止没有最终确定。
最重要的是,当涉及到实际存储上传文件的位置时,它有一点自己的想法 - 这意味着你可能最好看一下你可以更容易控制的第三方上传器。 / p>
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
将包含相对于您的网站域名的网址
thisPHYSICAL
将包含服务器上文件的物理位置。