如何在每个页面请求上更新样式表?

时间:2013-03-25 09:25:39

标签: c# asp.net css webforms updatepanel

在我的ASP.NET WebForms项目中,我需要在每个页面请求上更新样式表。

现在没问题 - 我添加了css.ashx处理程序

public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/css";
            Random r = new Random();
            int red = r.Next(0, 255);
            int green = r.Next(0, 255);
            int blue = r.Next(0, 255);

            string css = string.Format("body {{ background-color: rgba({0}, {1}, {2}, 1); }}", red, green, blue);
            context.Response.Write(css);
        }

并将其放到母版页面:

<link href="/Scripts/css.ashx?tmp=<%=(new Random()).Next() %>" rel="stylesheet" type="text/css" />

仍然没有问题。每个请求都会加载Css。

UpdatePanels出现问题:

<asp:UpdatePanel runat="server">
    <ContentTemplate>
        <asp:Button Text="Update" runat="server" OnClick="btnOk_Click" ID="btnOk" />
    </ContentTemplate>
</asp:UpdatePanel>

按“更新”按钮,css将不会更新。 这是正确的行为,但我需要找到解决方法。

我的建议是搬家 <link href="/Scripts/css.ashx" rel="stylesheet" type="text/css" />在MasterPage中阻止另一个UpdatePanel UpdateMode="Always"

<asp:UpdatePanel runat="server" UpdateMode="Always">
    <ContentTemplate>
       <link href="/Scripts/css.ashx?tmp=<%=(new Random()).Next() %>" rel="stylesheet" type="text/css" />
    </ContentTemplate>
</asp:UpdatePanel>

它完美无缺,但我只能在表单元素中添加此块。 结果我有无效的HTML文档(链接元素位于正文,而不是头部)。

我该如何预防呢?有任何想法吗? 我不想为每个更新链接href的请求注册javascript。

0 个答案:

没有答案