提前致谢。
我们需要包含或排除IE条件语句(位于页面标题中),具体取决于方法(来自后面的代码)是返回true还是false。方法在后面的代码中编写,因此如果IfBrowserIsMobile()
返回true,则不应存在与IE条件语句相关的标记。
我们如何实现这一目标?
标记(标题中)如下 -
<!--[if lt IE 9]>
<link rel="stylesheet" href="/css/lt-ie9.css" media="screen"/>
<![endif]-->
答案 0 :(得分:4)
在您的aspx页面的head部分中包含一个literal
控件,然后在后面的代码中,您可以将此控件的Text
属性设置为您喜欢的任何内容。此文本可以是html或非html文本。您可以根据需要在头部中拥有尽可能多的此类控件。
<asp:Literal ID="Literal1" runat="server"></asp:Literal>
在您的情况下,您还可以在Page_Load事件中包含以下代码。
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack && !IfBrowserIsMobile())
{
Literal1.Text = "<!--[if lt IE 9]>
<link rel="stylesheet" href="/css/lt-ie9.css" media="screen"/>
<![endif]-->";
}
}
如果您想使用Literal
控件发出JavaScript,请使用如下所示的代码隐藏。重要的是在这种情况下包括打开和关闭脚本标记。
Literal1.Text = @"<script type='text/javascript'>alert('hello sir');</script>";
答案 1 :(得分:0)
将其包裹在一个本身不会发出任何标记的元素中,例如PlaceHolder
:
<asp:PlaceHolder runat="server" ID="ieLogic">
<!-- your client-side markup here -->
</asp:PlaceHolder>
然后在服务器端代码中,根据您的条件设置其可见性:
if (IfBrowserIsMobile())
isLogic.Visible = false;
通常,您不会从服务器端代码更改标记,但您可以有条件地显示/隐藏标记的不同部分。