Pie*_* SS 3 .net asp.net webforms web-controls
我有asp:label
一个嵌套的自定义控件,它只是不呈现.我尝试注册一个类型的自定义WebControlAdapter
,Label
而在调试时我注意到Controls
集合中显然没有控件,它似乎完全忽略了任何嵌套元素.
这是标记
<asp:Label ID="lbl13" runat="server" AssociatedControlID="txt13" Text="<%$ Resources:Resources, lbl13 %>">
<asp:ValidationMessage ID="vm13" runat="server" MessageFor="txt13" CssClass="field-validation-error"></asp:ValidationMessage>
</asp:Label>
Run Code Online (Sandbox Code Playgroud)
知道如何绕过这个问题吗?
设置Text
属性时,它会清除子控件.如果Text="<%$ Resources:Resources, lbl13 %>"
从中删除,则Label
应该渲染子控件.
编辑
如果将Text
属性设置为静态字符串并仅添加文字内容,则标签将仅呈现文字内容:
<asp:Label runat="server" Text="Hello"> World</asp:Label>
Output: World
Run Code Online (Sandbox Code Playgroud)
如果将Text
属性设置为静态字符串并添加子控件,则标签将呈现文本和子控件:
<asp:Label runat="server" Text="Hello">
<asp:Label runat="server" Text="World" />
</asp:Label>
Output: HelloWorld
Run Code Online (Sandbox Code Playgroud)
如果Text
使用表达式构建器设置属性,则标签将仅呈现文本:
<asp:Label runat="server" Text="<%$ Resources:Resources,Hello %>">
<asp:Label runat="server" Text="World" />
</asp:Label>
Output: Localised version of "Hello"
Run Code Online (Sandbox Code Playgroud)
要覆盖此行为,您需要一个自定义控件Label
.例如:
public class MyLabel : Label
{
public override string Text
{
get { return base.Text; }
set
{
if (HasControls())
{
Controls.AddAt(0, new LiteralControl(value));
}
else
{
base.Text = value;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
425 次 |
最近记录: |