首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用UpdatePanel在页面上从web控件注册样式表

使用UpdatePanel在页面上从web控件注册样式表
EN

Stack Overflow用户
提问于 2010-07-27 16:16:14
回答 1查看 2K关注 0票数 2

从客户web控件一次在页面上注册样式表的最佳方法是什么?请记住,页面使用UpdatePanel进行异步调用。我尝试将<link>标记放在ScriptManager.RegisterClientScriptBlock()中,但是我得到了以下错误:

为类型'MyControl‘和键'MyKey’注册的脚本标记在脚本标记之外有无效字符:。只有正确格式化的脚本标记才能注册。

如果我试图通过将它添加到控件层次结构来将其添加到页面中,它将在页上的每个控件实例中显示一次。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-27 19:36:13

好吧,我跟你一起去的。我决定创建包含链接的扩展方法。

更新:--我不得不更改ScriptManager扩展,因为它仍然没有很好地处理UpdatePanels。更新后的代码如下。

代码语言:javascript
复制
    <System.Runtime.CompilerServices.Extension()> _
    Public Sub RegisterStylesheetInclude(ByVal scriptManager As ScriptManager, ByVal page As Page, ByVal url As String)
        Dim css = "var cssNode = document.createElement('link');" & _
         "cssNode.type = 'text/css';" & _
         "cssNode.rel = 'stylesheet';" & _
         "cssNode.href = '" & url & "';" & _
         "document.getElementsByTagName('head')[0].appendChild(cssNode);"

        scriptManager.RegisterClientScriptBlock(page, page.GetType(), url, css, True)
    End Sub

    <System.Runtime.CompilerServices.Extension()> _
    Public Sub RegisterStylesheetInclude(ByVal clientScriptManager As ClientScriptManager, ByVal page As Page, ByVal url As String)
        Dim found = page.Header.Controls.OfType(Of HtmlLink).Any(Function(m) m.Href = url)

        If Not found Then
            Dim link As New HtmlLink()
            link.Href = url
            link.Attributes("type") = "text/css"
            link.Attributes("rel") = "stylesheet"
            page.Header.Controls.Add(link)
        End If
    End Sub
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3345650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档