我在UpdatePanel中有一个用户控件。一旦事件被触发并更新用户控件 - 它似乎失去了它的CSS样式。这只发生在IE8中,而在Chrome和FF中则很好。
用户控件,例如:
<style type="text/css">
div.test
{
width: 500px;
height: 400px;
background-color: #0000BB;
color: #FFFFFF;
border: 2px solid #11CC00;
}
</style>
<div id="div123" runat="server" class="test"></div>
public void SetText(string text)
{
div123.InnerText = text;
}
使用UpdatePanel内的用户控件并更新它的页面:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div id="div1" runat="server">
<uc:TestUC ID="test1" runat="server"></uc:TestUC>
</div>
<asp:Button ID="Button1" runat="server" OnClick="Button1_OnClick" Text="Click" />
</ContentTemplate>
</asp:UpdatePanel>
protected void Button1_OnClick(object sender, EventArgs e)
{
test1.SetText(DateTime.Now.ToString());
}
在Chrome和FF中它似乎按预期工作(按钮点击导致当前时间显示在用户控件中,没有其他事情发生),但在IE8中,用户控件内的div丢失其样式(背景颜色,边框)
可能导致此问题的原因,以及可以采取哪些措施来阻止它?
答案 0 :(得分:3)
此问题提到here。
我尝试了这个建议 - 在OnInit中注册css链接 - 它似乎有效。
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
ScriptManager sm = ScriptManager.GetCurrent(Page);
if (!sm.IsInAsyncPostBack)
{
string css = string.Format("<link rel=\"stylesheet\" href=\"{0}\" type=\"text/css\" />", ResolveUrl(CssClassFile));
ScriptManager.RegisterClientScriptBlock(this, typeof(MyBlahControl), "MyBlahId", css, false);
}
}
答案 1 :(得分:2)
我有类似的问题
我解决了将<link ..
从<page>
移动到<header>
的问题{/ 1}}。
由于我使用MasterPage并且我不想在所有页面中使用链接,因此我发现将ContentPlaceHolder放在MasterPage的标题中很有用
<head id="Head1" runat="server">
...
<asp:ContentPlaceHolder ID="HeaderContentPlaceHolder" runat="server"/>
</head>
然后是所需页面内的链接:
<asp:Content ID="Content2" ContentPlaceHolderID="HeaderContentPlaceHolder" Runat="Server">
<link rel="stylesheet" type="text/css" href="CSS/my.css" />
</asp:Content>
答案 2 :(得分:0)
将css从用户控件复制到页面将解决它。
答案 3 :(得分:0)
我的应用程序遇到了同样的问题,它似乎杀死了我的动态面板中的所有样式...我通过将内容占位符(我将动态HTML写入的地方)移动到&lt;头&GT;在我的母版页上标记。
工作!谢谢大家:))