设置多个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]-->
您可以使用<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>");