如何在DNN模块中插入一个图片--在模块中引用资源文件

简介: DNN永远都是运行在网站的根目录 DNN的设计上最大的特点就是始终是使用一个网站根目录下的Default.aspx文件加载皮肤和模块从而实现整个网站的页面。这也就是说DNN这个Asp.net程序永远是运行在DNN网站的根目录的,所有的资源文件(如:JS文件,图片,CSS)的引用都要从DNN网站的根目录算起。

DNN永远都是运行在网站的根目录

DNN的设计上最大的特点就是始终是使用一个网站根目录下的Default.aspx文件加载皮肤和模块从而实现整个网站的页面。这也就是说DNN这个Asp.net程序永远是运行在DNN网站的根目录的,所有的资源文件(如:JS文件,图片,CSS)的引用都要从DNN网站的根目录算起。

 

这么说有点难以理解,举个例子吧:

假设你把DNN安装到了一个虚拟目录下面,比如DotNetNuke_2目录下,那么你输入http://localhost/DotNetNuke_2就可以访问到这个DNN网站了。

然后你新建了一个模块,放到了DNN网站的DesktopModules/MyModuleName目录下。现在你新建模块在IIS中位置应该是这样的:http://localhost/DotNetNuke_2/DesktopModules/MyModuleName

问题来了

现在你需要在View.ascx文件中放入一个图片,作为界面的一部分,这个图片的名字是”CompanyLogo.gif”,位置就在”MyModuleName”这个目录下,自然,我们可以放入一个img tag,如下:

< img  src =””  alt =”your  alt”  />

现在问题来了,这个src到底是多少呢?

是使用”./CompanyLogo.gif”?我们先来试试,代码如下:

< img  src =” ./CompanyLogo.gif” alt =”your  alt”  />

最后生成的html代码跟这一样:

< img  src =” ./CompanyLogo.gif” alt =”your  alt”  />

并且图片没有显示,仔细一想,对啊,DNN是一直在根目录运行,模块只是作为一个控件加载,DNN的根目录下自然没有CompanyLogo.gif这个文件。

这样不行就使用全名指定吧,这总没问题了吧。我们来试试:

< img  src =”DotNetNuke_2/DesktopModules/MyModuleName/ CompanyLogo.gif” alt =”your  alt”  />

运行后,图片显示了,这样可以!

不过等等,如果别人用这个模块,虚拟目录可能就不是这个名字了,这个怎么处理?

ModulePath

这样的话,目录的路径就应该动态生成了,DNN已经为我们考虑了这个问题,在PortalModuleBase基类里,有一个ModulePath属性,使用这个属性就可以动态生成资源对应的路径了。

最后的代码如下:

< img  src =”<%=  ModulePath % >  CompanyLogo.gif” alt = “your alt” />

就可以了。

在这里ModulePath 的值为 "/DotNetNuke_2/DesktopModules/ MyModuleName /"

ResolveUrl

还有一个函数可以了解一下,就是在DotNetNuke.Common.Global类中的ResoveUrl函数

Public   Function  ResolveUrl( ByVal  url  As   String As   String

如果传入的URL以”~”开头,就会使用ApplicationPath代替”~”。

就是说我们可以用”~”来指代DNN的网站根目录,这样对于任何资源,我们只要使用”~”来开头,从根目录开始制定,就都可以引用到。

在这个例子里,可以这么写:

Page.ResolveUrl(“ ~/ DesktopModules /  MyModuleName  / CompanyLogo.gif”)

这里

ApplicationPath的值为"/DotNetNuke_2"

最后

希望这些小技巧能帮你解决一些问题!

目录
相关文章
|
机器学习/深度学习 算法 PyTorch
OpenCV-图像着色(采用DNN模块导入深度学习模型)
OpenCV-图像着色(采用DNN模块导入深度学习模型)
194 0
来自OpenCv的DNN模块助力图像分类任务
来自OpenCv的DNN模块助力图像分类任务
199 0
来自OpenCv的DNN模块助力图像分类任务
|
机器学习/深度学习 数据库 SQL
|
机器学习/深度学习
DNN 模块MVP 模式学习中的一些问题
为了让View部分可以测试,我们使用interface来分离View和业务逻辑的耦合。 我的问题是: Q:对于在aspx.design.cs中声明的控件,我们也需要在interface中声明吗?如果要声明,那么在aspx.design.cs中的控件声明是不是就是interface的实现? 我们不能在interface直接声明跟aspx.design.cs控件同名的变量,我们应该认为aspx.design.cs中的控件就是view的一部分,我们无法控制。
503 0
|
机器学习/深度学习 前端开发
介绍一些免费的DNN模块
Administration Advanced Control Panel Free fully featured ajax enabled control panel replacement for Dot...
853 0
|
机器学习/深度学习
如何使用NAnt 自动打包DNN模块 之一
一、安装NAnt 每次开发完毕一个DNN模块的版本,打包DNN模块是一件很繁琐的事情。更重要的是,为每一个发布的版本做一个安装包如果用手工管理和容易出错。这里介绍一下如何使用NAnt自动打包模块。 首先需要下载NAnt,http://sourceforge.net/projects/nant/ 下载之后解压这个ZIP包 解压之后的目录重名名为NAnt,拷贝到c:下面。
976 0
|
机器学习/深度学习 SEO
介绍几个DNN SEO模块,可免费试用的
iFinity Url Master - Get the best SEO results by taking control of your DNN urls iFinity Tagger - Tag your DNN content and create specific, target...
637 0
|
XML 机器学习/深度学习 数据格式
DNN Navisuite菜单模块原始XML文件的格式
DNN 比较好用的一个菜单模块式Navsuite模块,这个模块因为使用XML+XSL的技术手段,可以灵活的生成各种各样的菜单样式。 你可以通过修改style目录下的xsl文件来创建自己的菜单样式,但有一个问题是这个模块没有非常详细的手册,生成的XML是什么格式我们并不熟悉,我这里把生成的XML贴出来给大家参考。
823 0
|
机器学习/深度学习
DNN模块调试的一点小技巧
有时候模块出错只是出现这样的错误提示: A critical error has occurred. object reference not set to an instance of an object. 这样的错误提示是毫无价值的,那如何得到有价值的错误提示信息呢?可以使用我之前提高的DNN调试利器DNNDebug.aspx--如何调试出错信息不具体的程序错误就可以解决问题。
742 0
|
机器学习/深度学习
DNN永日新闻模块(YongRi)免费1.00.09版本下载
DNN上实现新闻发布国内模块很少,主要是使用永日新闻模块实现。最近不少人在寻找之前免费的1.00.09版本,为方便大家学习,我把这个模块传上来了。 下载链接:永日新闻模块1.00.09免费版本下载 此版本不支持图片新闻模板。
755 0