我最近向单个网页添加了一个 UpdatePanel,它在按钮单击时呈现不同的用户控件。我正在努力解决一个问题,我正在使用 Header.Stylesheet.CreateStyleRule 动态地将内联样式添加到标题中 - 问题是它没有插入到部分回发中并且它确实有意义。这显然是因为它是部分回发,并且仅在页面第一次加载时才呈现标头。
样式是通过以下方法添加的,这些方法从数据库中获取样式:
Private Sub InitializeStylesheet(ByVal ButtonId As Integer)
Dim CSSStylesheet As Stylesheet = StyleBackend.GetStylesheets(ButtonId)
Dim IdClassList As List(Of StyleIDClass) = StyleBackend.GetStylesheetsStyleIDClass(CSSStylesheet.StylesheetID)
'Iterates through the cssidclass
For Each cssidClass In IdClassList
Dim styleItems As List(Of StyleItem) = StyleBackend.GetStyleItemsByIDorClass(cssidClass.StyleIDClassID)
Dim cssString As String = Nothing
For Each StyleItem As StyleItem In styleItems
cssString += StyleItem.Property & ":" & StyleItem.Value & ";"
Next
'Iterates all cssitems which belongs to a cssidclass
Me.Header.StyleSheet.CreateStyleRule(New CustomStyle(cssString), Nothing, cssidClass.ClassOrID)
Me.Header.ViewStateMode = UI.ViewStateMode.Disabled
Next
End Sub
我一直在搜索我的屁股试图让它工作,但这似乎是不可能的。
这篇 msdn 文章字面意思是说,做我想做的事是不可能的。 http://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmlhead.stylesheet.aspx
不支持在异步回发期间以编程方式添加样式或样式规则。当您将 AJAX 功能添加到 ASP.NET 网页时,异步回发会更新页面的区域而不更新整个页面。有关详细信息,请参阅 Microsoft Ajax 概述。
有没有人有这样做的建议或替代方法?
谢谢!