通过html元素上的代码设置样式。还有更好的方法吗?

时间:2009-09-18 19:43:42

标签: c# asp.net css

我遇到了一些像这样的代码:

public string IsAdmin()
{
    string style = "";

    if(EditUserName == "")
    {
        style = "visibility:hidden;display:none";
    }
    return style;
}

然后在html中,我看到这样的事情:

 <table style='<%= IsAdmin() %>'>
 </table>

以上似乎不是最好的方法。是否有一种更有效和替代的方式来以编程方式设置html元素的样式。

3 个答案:

答案 0 :(得分:3)

如果你使用这种安排:

<table runat="server" ID="tableElement">
</table>

然后,你可以这样做:

HtmlTable table = (tableElement as HtmlTable);
table.Style.Add(HtmlTextWriterStyle.Display, "none");
table.Style.Add(HtmlTextWriterStyle.Visibility, "hidden");

修改

根据其他建议,你可以改用这种技术:

table.Style.Add("class", "whatever");

答案 1 :(得分:3)

对我来说,看起来你真正想要的是基于权限的可见性而不是真正的样式,为什么不这样做:

<强>标记:

<table runat="server" visible='<%= IsVisible() %>'>
</table>

<强>代码隐藏:

protected bool IsVisible()
{
    bool result= true;

    if(EditUserName == string.empty)
    {
        result= false;
    }
    return result;
}

答案 2 :(得分:2)

我首先要说的是,在元素上设置内联样式通常是一种不好的做法 - 尤其是在服务器端代码上。

通常应通过外部样式表设置样式。

在客户端操作DOM时,有许多可接受的方法来设置元素的样式。通常,编码人员使用像jQuery这样的库是有效的。