【问题标题】:Setting styles through code on html elements. Is there better way?通过 html 元素上的代码设置样式。有没有更好的办法?
【发布时间】:2009-09-18 19:43:41
【问题描述】:

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

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

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

然后在 html 中,我看到如下内容:

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

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

【问题讨论】:

    标签: c# asp.net css


    【解决方案1】:

    如果你使用这种安排:

    <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");
    

    【讨论】:

    • 谢谢,s-o-m-e-times 我们确实想在 html 电子邮件中做一个肮脏的旧内联样式,所以谢谢@
    【解决方案2】:

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

    样式一般应该通过外部样式表来设置。

    在客户端操作 DOM 时,有许多可接受的方法来设置元素的样式。一般来说,程序员使用 jQuery 之类的库是很有效的。

    【讨论】:

    • +1 最好遵循这个建议并使用 CSS 类。然后在服务器时确定是否包含 user.css 或 admin.css 并根据需要重新设置样式。
    • 他可能仍然需要这种技术来设置 CSS 类,这可能决定一个项目最初是否应该可见。
    • +1。嵌入内联 CSS 与老式的 FONT 标签一样邪恶。不要这样做。相反,使用“table.admin”规则创建一个单独的 CSS 文件,并根据您的逻辑将表 CLASS 属性设置为“admin”。将逻辑和设计问题分开。
    • 整个 asp.net 域太奇怪了,而且……错误……编写 webapps。
    • 我 100% 同意内联样式
    【解决方案3】:

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

    标记:

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

    代码隐藏:

    protected bool IsVisible()
    {
        bool result= true;
    
        if(EditUserName == string.empty)
        {
            result= false;
        }
        return result;
    }
    

    【讨论】:

    • 如果 Javascript 计划稍后动态显示表格,这可能会导致负面影响,因为将表格设置为不可见会阻止 HTML 写入浏览器
    • @bendewey - 你能再解释一下吗?你的意思是通过它的样式属性或可见属性来设置表格的可见性?
    • Visible 属性在使用 runat="server" 时不会呈现 HTML。 (即,您的 javascript 将找不到该元素,因为它不存在)
    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 2016-02-12
    • 2020-04-05
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 1970-01-01
    相关资源
    最近更新 更多