制作asp:标记特定的HTML标记

时间:2011-07-29 13:52:12

标签: vb.net

VB.net新手,只想弄清楚如何正确操作asp:Label控件。

我有一个页面,基于是否有结果等,应该显示带有标题的<h1></h1>标记,然后显示数据。当我使用代码隐藏模型时,面向页面的用户基本上只有以下内容:

<asp:Label ID="lblMessage" runat="server" 
    Visible="false" />

<asp:DataList ID="dlCurriculumLists" runat="server" 
    DataSourceID="sdsCurriculumLists"
    DataKeyField="Entry No_" 
    RepeatLayout="Flow"
    Visible="false">
    <ItemTemplate>
            <div>
                <asp:HyperLink ID="hlCurriculum" runat="server"  
                    Text='<%# DataBinder.Eval(Container.DataItem, "Title") %>'  
                    NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "File Path") %>'
                    ToolTip='<%# DataBinder.Eval(Container.DataItem, "Title") %>'
                    Target="_blank"
                    Style="font-weight: bold;">
                </asp:HyperLink>
            </div>
    </ItemTemplate>
</asp:DataList>

在我的代码隐藏页面上,我根据数据库中的数据将asp:Labelasp:DataList设置为Visible="true"。这是捕获 - 如果有数据,我想将lblMessage设置为H1,如果没有,则只需标准Label文本。我意识到我可以通过CSS模拟外观,但只是希望有另一种方式(可能类似于ItemTemplate概念)来指定Label控件的HTML类型 - 它默认似乎是一个。 / p>

3 个答案:

答案 0 :(得分:2)

据我所知,asp:Label组件在设置<label>属性时始终会生成AssociatedControlId HTML标记。

您可以做的是使用Literal Control并在运行时使用您希望的HTML填充它。

<强>更新

使用当前的Label控件,根据需要执行此操作可以做的一件事就是为标签设置theme,将其标记为H1。然后,您可以根据需要切换控件EnableTheming属性。

答案 1 :(得分:2)

对于来自VB背景的人来说,认为显示仲裁文本的最基本控件是标签是一个常见的错误。

那不是真的。标签应标记某些内容,通常是另一个UI控件(这是AssociatedControlId属性的用途)。

如果您只想显示任意文本或HTML标记,请使用更基本的内容。一些例子是asp:Literal,asp:占位符或asp:Localize。

例如,使用名为myLiteral的asp:Literal,您可以轻松地在代码中创建标题:

myLiteral.Text = "<h1>" & Server.HtmlEncode(myHeading) & "</h1>"

答案 2 :(得分:0)

除了此处已经建议的内容之外,您还可以使用所需的任何属性实现自己的ASP.NET控件,然后根据属性“动态”修改其呈现。值。这很有趣,并不像人们想象的那么难。以下是有关此主题的一些信息:http://msdn.microsoft.com/en-us/library/vstudio/zt27tfhy(v=vs.100).aspx