只要你曾经使用过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 ….