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:Label
和asp:DataList
设置为Visible="true"
。这是捕获 - 如果有数据,我想将lblMessage设置为H1,如果没有,则只需标准Label文本。我意识到我可以通过CSS模拟外观,但只是希望有另一种方式(可能类似于ItemTemplate
概念)来指定Label控件的HTML类型 - 它默认似乎是一个。 / p>
答案 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