如何在DotNetNuke自定义模块中显示图像?

时间:2013-05-21 07:46:28

标签: c# dotnetnuke dotnetnuke-module dotnetnuke-6

我正在为上传图片编写自定义模块。 上传文件到自定义文件夹后。加载图像时,图像的地址是正确的,但它不会在图像控制中显示。

如何在DotNetNuke自定义模块中显示图像?

//Save Picture Code:

    fileuppic.PostedFile.SaveAs(MapPath("~/images/Hotels/" + filename));

//Load Picture Code:

  while (dr.Read())
    {
       imgpic.ImageUrl = MapPath("~/images/Hotels/") + dr["Picture"].ToString();
    }

//my ImageControl :
    <asp:Image ID="imgpic" runat="server" />

2 个答案:

答案 0 :(得分:4)

如果您已经拥有fileId,则可以执行以下操作:

VB.NET

Protected Function GetPath(fileId As Integer) As String

    Dim fi = FileManager.Instance.GetFile(fileId)
    Return FileManager.Instance.GetUrl(fi)

End Function

C#

private string GetPath(int fileId)
{
    var fi = FileManager.Instance.GetFile(fileId);
    return FileManager.Instance.GetUrl(fi);
}

答案 1 :(得分:3)

您并没有像DNN那样使用文件系统。图像应该通过DNN的DotNetNuke.Services.FileSystem命名空间来管理,你可能会编写很多你不需要的代码来保存图像(尝试使用dnnFilePickerUploader控件,它会处理上传并传递给你一个FileId )。一旦FileId与您的对象持久存在,您可以使用类似的东西来加载图像:

private string GetPath(int fileId)
{
    StringBuilder sb = new StringBuilder("/Portals/");

    IFileInfo fi = FileManager.Instance.GetFile(fileId);
    sb.Append(fi.PortalId);
    sb.Append("/");
    sb.Append(fi.RelativePath);

    return sb.ToString();
}