如果没有innerHtml,则隐藏子html元素

时间:2011-12-13 15:54:04

标签: c#

我正在尝试创建一个c#函数,它将隐藏所有没有传递的html控件的innerhtml的子元素。有人能指出我正确的方向吗?不确定从哪里开始。

我正在使用asp.net 4.这是我的html结构的一个例子..

<div id="officeInfo" runat="server">
    <h2><%= mlaLocationDTO.Name %></h2>
    <p><%= mlaLocationDTO.Address.Street1 %></p>
    <p><%= mlaLocationDTO.Address.Street2 %></p>
    <p>Tel:<%= mlaLocationDTO.Phone %></p>
    <p>Fax:<%= mlaLocationDTO.Fax %></p>
    <p>Email:<%= mlaLocationDTO.Email %></p>
    <a href="#">Get Directions</a>
    <a href="#">Submit Your Resume</a>
</div>

我的假功能......

protected void HideHtmlElementsWhenEmpty(Control element)
{
    foreach (Control c in element.Controls) maybe there's a better way than to use a loop
    {
        if(c.innerHtml != null) //not sure what to do here 
        {
            c.Visible = false;
        }
    }
}

谢谢!

1 个答案:

答案 0 :(得分:0)

有条件地输出HTML标记:

<%= String.IsNullOrEmpty(mlaLocationDTO.Address.Street1) 
    ? ""
    : "<p>" + mlaLocationDTO.Address.Street1 + "</p>" %>

哦,不要忘记对数据库输出进行正确编码:Street1可能包含<或其他HTML不适合的字符,我们不希望冒任何脚本注入风险......

<%= String.IsNullOrEmpty(mlaLocationDTO.Address.Street1)
    ? ""
    : "<p>" + Server.HtmlEncode(mlaLocationDTO.Address.Street1) + "</p>" %>