在加载时以编程方式更改CSS类?

时间:2012-02-29 08:55:54

标签: c# asp.net html css

我有两页,我们称之为“receipts.com”和“business.receipts.com”。两者都通过Response.Redirect链接到不同域上的页面(“http://receipts2.com/default.aspx?mode=”) 其中“模式”参数是引用页面。

接收页面应查看查询字符串,并根据“模式”参数选择不同的CSS类。

这是如何实现的?这是正确的方法吗?

4 个答案:

答案 0 :(得分:2)

您可以使用相同的类和不同的样式表,而不是交换类名。 处理样式表有两种方法:客户端和服务器端。

在客户端,您可以parse the query string使用以下内容禁用样式表:(document.getElementsByTagName("link")[i]).disabled = true;

在服务器端,您可以使用themes或只是在样式声明周围添加占位符,并使用查看Response.QueryString["mode"]的代码隐藏来显示/隐藏它们:

<asp:PlaceHolder ID="placeHolder1" runat="server" Visible="false">
   <link rel="stylesheet" href="/alternate.css" media="all" />
</asp:PlaceHolder>

并在某个主页面中编写代码:

if(Response.QueryString["mode"] == "blah")
{
  placeHolder1.Visible = true;
}

答案 1 :(得分:1)

您可以使用document.referrer而不是通过查询字符串传入页面。

当你说&#34;接收页面应该在查询字符串中查找,并选择一个不同的CSS类&#34;,该类将被设置为什么,即正文或像p这样的元素? / p>

普通Javascript

document.getElementById("MyElement").className = " yourClass";

的jQuery

$("p").addClass("yourClass");

也许你的意思是css主题?

然后你可以尝试

if (document.referrer == "blahblah")
  document.write("<link rel='stylesheet' type='text/css' href='one.css' />)
else
  document.write("<link rel='stylesheet' type='text/css' href='two.css' />)

虽然我建议调查jQuery

$.get(stylesheet, function(contents){
  $("<style type=\"text/css\">" + contents + "</style>").appendTo(document.head);
});

答案 2 :(得分:1)

您可以使用不同的Page-Themes

protected void Page_PreInit(object sender, EventArgs e)
{
    switch (Request.QueryString["mode"])
    {
        case "receipts.com":
            Page.Theme = "DefaultTheme";
            break;
        case "business.receipts.com":
            Page.Theme = "BusinessTheme";
            break;
    }
}

当然,您也可以使用上面的代码将不同的Css-Classes应用于控件。

答案 3 :(得分:1)

你可以做这样的事情

    {
string hrefstring = null;

string mode = this.Page.Request.QueryString.Item("mode");


if (mode == "a") {
    hrefstring = ("~/yourcss/a.css");

} else if (mode == "b") {
    hrefstring = ("~/yourcss/b.css");
}

css.Href = ResolveClientUrl(hrefstring);
css.Attributes("rel") = "stylesheet";
css.Attributes("type") = "text/css";
css.Attributes("media") = "all";

Page.Header.Controls.Add(css);
    }