设置多个html属性的最佳方法,无需制作用户控件或使用文字控件

本文关键字:控件 用户 作用 文字 html 属性 方法 最佳 设置 | 更新日期: 2023-09-27 17:58:47

试图找到向这些html元素中的每个元素动态添加方向属性的最佳方法。我知道如何通过获得方向

var dir = CultureInfo.CurrentCulture.TextInfo.IsRightToLeft ? "rtl" : "ltr";

但我需要找到一种优雅的方法来动态地将它添加到下面的html 中

<!--[if lt IE 7]><html class="ie6" lang="en"><![endif]-->;
<!--[if IE 7]><html class="ie7" lang="en"><![endif]-->
<!--[if IE 8]><html class="ie8" lang="en"><![endif]-->
<!--[if gt IE 8]><!--><html lang="en"><!--<![endif]-->

如果我把它放在一个用户控件中,并为每个html元素分配一个id,然后设置每个控件的direction属性,我会因为在用户控件中没有关闭html标记而得到运行时错误。

有没有什么简单的方法可以让我在不通过用户控件的情况下为这些html元素中的每一个设置dir属性?我甚至无法在每个html标签中放置<asp:Literal>控件,这开始让我感到沮丧。谢谢

编辑:最终结果应该是

<!--[if lt IE 7]><html class="ie6" lang="en" dir="ltr"><![endif]-->;
<!--[if IE 7]><html class="ie7" lang="en" dir="ltr"><![endif]-->
<!--[if IE 8]><html class="ie8" lang="en" dir="ltr"><![endif]-->
<!--[if gt IE 8]><!--><html lang="en" dir="ltr"><!--<![endif]-->

设置多个html属性的最佳方法,无需制作用户控件或使用文字控件

您可以使用<asp:Literal>控件来输出整个结果。您可以在代码后面生成整个摘录,然后将其提供给文本控件。

或者,您可以创建一个公共函数:

public string Direction() {
    return (CultureInfo.CurrentCulture.TextInfo.IsRightToLeft) ? "rtl" : "ltr";
}

从你的aspx页面中调用它:

<!--[if lt IE 7]><html class="ie6" lang="en" <%=Direction()%>><![endif]-->;
<!--[if IE 7]><html class="ie7" lang="en" <%=Direction()%>><![endif]-->
<!--[if IE 8]><html class="ie8" lang="en" <%=Direction()%>><![endif]-->
<!--[if gt IE 8]><!--><html lang="en" <%=Direction()%>><!--<![endif]-->

在标签中放入runat=server:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" id="html_tag" runat="server">

然后在代码后面添加您需要的任何条件属性,例如:

html_tag.Attributes.Add("dir", "ltr"); 

这也可以使用CSS进行设置,如果您要设置多个项目,这样做可能对您有利。让你的物品使用一个额外的类别,比如:

在页面的其他地方(最好是上面),在页面上放一个Literal,并使其文本发出内联样式:

Literal.Text = String.Concat("<style> .useLTR {", CultureInfo.CurrentCulture.TextInfo.IsRightToLeft ? "direction: rtl;" : String.Empty, "} </style>");