如何检查 ContentPlaceHolder 是否绝对为空?
在 ContentPlaceHolder 中只有文本,没有标签和控件。
示例 Page.Master:
<asp:ContentPlaceHolder runat="server" ID="Content" />
示例测试.aspx:
<asp:Content runat="server" ContentPlaceHolderID="Content">
Custom text without controls. Content.Controls.Count is 0 and Content.HasControls is false.
</asp:Content>
我需要做的是,当占位符为空时,将默认内容放在另一个控件中。
为同一个占位符尝试覆盖两次,但在动态加载时出现错误。
最佳答案
您可以实现一种将内容控件呈现为字符串的方法,然后检查该字符串以查找它是否包含任何非空白字符:
private bool HasContent(Control ctrl)
{
var sb = new System.Text.StringBuilder();
using (var sw = new System.IO.StringWriter(sb))
{
using(var tw = new HtmlTextWriter(sw))
{
ctrl.RenderControl(tw);
}
}
var output = sb.ToString().Trim();
return !String.IsNullOrEmpty(output);
}
protected void Page_PreRender(object sender, EventArgs e)
{
var placeholder = Master.FindControl("FeaturedContent");
var hasContent = HasContent(placeholder);
}
关于c# - 如何检查 ContentPlaceHolder 是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18345469/