如何更改asp.net页面服务器端的标记(来自.cs文件)

时间:2016-01-21 19:32:08

标签: c# asp.net

提前致谢。

我们需要包含或排除IE条件语句(位于页面标题中),具体取决于方法(来自后面的代码)是返回true还是false。方法在后面的代码中编写,因此如果IfBrowserIsMobile()返回true,则不应存在与IE条件语句相关的标记。         我们如何实现这一目标? 标记(标题中)如下 -

<!--[if lt IE 9]>
    <link rel="stylesheet" href="/css/lt-ie9.css" media="screen"/>
    <![endif]-->

2 个答案:

答案 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;

通常,您不会从服务器端代码更改标记,但您可以有条件地显示/隐藏标记的不同部分。