Register  |   Login
关于本人
Baldwin's Status
Ramblings of a developer for dnn solution...
 Contact Me
随笔档案
Blog搜索
相册库
更多照片请查看相册库
最新评论
Rss Feed
feedsky
抓虾
pageflakes
newsgator
哪吒
我们的服务
  • DotNetNuke 咨询
  • Web设计及其模块开发
  • 免费建站
  • 电子商务
  • 开拓市场
我们致力于开发定制的web 2.0 ,所服务的客户主要包括小中型企业,社区俱乐部及其非盈利机构组织。我们将利用开源的DNN作为我们核心的系统机制,更多相关信息...

浅谈如何做到dnn物尽所用

Posted in [DNN模块开发], [DNN使用及思考] By baldwin

只要你曾经使用过dnn或对此进行二次开发,也许是模块开发,也许是皮肤设计,也许修改核心等等, 你都会把发现其实dnn本身是有很多资源我们可以物尽所用的,在此我就举一个最明显不过的例子,顺便对此进行修改以达到我们需求的目标.

这就是我们开发过程最常见,用的最多的控件LabelControl, 该控件主要执行一个label控件的功能,这我们都很好理解,而在dnn所多出来的就是本地化这一特性,也就是说, 你可以直接在资源文件(比如yourcontrol.ascx.resx或SharedResources.resx)里直接定义它Text属性, 例如设置lblTitleSubject.Text为Subject, 这样你在页面上就可以看到它对应的本地化显示的是Subject,而如果还有一个China版本的资源文件(比如yourcontrol.ascx.zh-ch.resx),这样它对应可能就是”题目”. 而它还有一个功能就是对应还会在左侧显示一个帮助图象,你可以定义对应的说明性文字以提供帮助,如此可以让用户比较清晰的理解该真正含义.你如果深入了解该控件,你会发现其中奥秘.先来看看页面的元素:

<label id=label runat="server">
 <asp:linkbutton id=cmdHelp tabindex="-1" runat="server" CausesValidation="False" enableviewstate="False">
  <asp:image id="imgHelp" tabindex="-1" runat="server" imageurl="~/images/help.gif" enableviewstate="False">asp:image>
 asp:linkbutton>
 <asp:label id=lblLabel runat="server" enableviewstate="False">asp:label>
label>
<br>
<asp:panel id=pnlHelp runat="server" cssClass="Help" enableviewstate="False">
 <asp:label id=lblHelp runat="server" enableviewstate="False">asp:label>
asp:panel>

 从这里你就可以看出一些名堂来的, 比如你需要更改它对应帮助小图标,那你只要代替一下位于images下的help.gif即可, 又比如你需要修改帮助文字的样式, 那你不妨在皮肤文件里修改一下CSS中的类help属性.这些都是一目了然的,现在让我们来看看程序集,如图:

你也会从此发现一些端倪来,那就是该控件对应具有的属性,比如HelpKey,HelpText,Suffix,ControlName等等, 我想这些都是很清楚的属性,大家都能从字面上读懂其意思,不过不知道你是否注意到没有,这些属性都是公共的,也就是我们可以直接访问的,可还有一些受保护的属性(Protected),比如cmdHelp, pnlHelp 等等,而我现在想利用的就是cmdHelp这个属性,比如现在有一个需求就是利用LabelControl本身具有的本地化属性特征,可这已经足够说明它本身意思,就是根本就不需要所谓HelpText(其实说实在的,很少有人利用这一属性,从而导致有时你去点击那个帮助图标,结果只是一片yellow的底色方框,很别扭),前边说过了,因为这是受保护的属性,所以直接是访问不到的,那怎么办,其实很简单,比如:
   Private Sub HiddenLableHelp()
       lblTitleSubject.FindControl("cmdHelp").Visible = False
   End Sub
 
也就是我干脆就直接找到这个在里边的控件,然后设置它的属性为False.
 
看到你可能会说这也太简单了,但其实我想说就是dnn本身是很多资源我们可以挖掘出来的,可以物尽所用的,关键就是如何有效的利用.接下来我下一篇文章会继续这一话题,谈谈如何修改urlcontrol ….

Previous Entry:一些值得推荐的dnn资源
Next Entry:NUS项目告一段落

Comments

Was it good for you, too?Join the discussion » ,but you need to login first before you make comments.