如何在 Visual Studio 中修复 RegisterClientScriptBlock 已过时警告

Posted

技术标签:

【中文标题】如何在 Visual Studio 中修复 RegisterClientScriptBlock 已过时警告【英文标题】:How do I fix RegisterClientScriptBlock is Obsolete warning in Visual Studio 【发布时间】:2011-06-17 21:02:32 【问题描述】:

我的 vb.net 项目中有以下子例程,运行良好,但我经常收到构建警告:

'Public Overridable Sub RegisterClientScriptBlock(key As String, script As String)' 已过时:'推荐的替代方法是 ClientScript.RegisterClientScriptBlock(Type type, string key, string 脚本)。 访问http://go.microsoft.com/fwlink/?linkid=14202

我认为最好使用正确的方法。我已按照此处的说明进行操作-http://msdn.microsoft.com/en-us/library/system.web.ui.page.registerclientscriptblock.aspx,但这并没有多大意义。任何帮助将不胜感激。

Protected Sub DBC_MEMBER_IsActive_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DBC_MEMBER_IsActive.CheckedChanged
        Dim showmessage As String = "Warning!\r\n \r\n Unticking this box will delete this Member from the Databse. \r\n \r\n If you are unsure, make sure the box remains ticked"
        Dim alertScript As String = "<script language=javascript> "
        alertScript += "alert('" & showmessage & "');"
        alertScript += "</script" & "> "

        If Not ClientScript.IsClientScriptBlockRegistered("alert") Then
            Me.RegisterClientScriptBlock("alert", alertScript)
        End If
    End Sub

【问题讨论】:

【参考方案1】:

将 Me.RegisterClientScriptBlock("alert", alertScript) 更改为 ClientScript.RegisterClientScriptBlock(TypeOf Me, "alert", alertScript)

我不确定这是否是 vb.net 中“TypeOf Me”的正确语法。 在 C# 中,它看起来像这样: ClientScript.RegisterClientScriptBlock(typeof(this), "alert", alertScript);

【讨论】:

【参考方案2】:

试试这个:

If Not ClientScript.IsClientScriptBlockRegistered(GetType(YourPageClass), "alert") Then
    ClientScript.RegisterClientScriptBlock(GetType(YourPageClass), "alert", alertScript)
End If     

(将 YourPageClass 替换为您的页面类的名称)。

typekey参数用来防止在同一个页面注册同一个脚本。 type 参数在您直接在页面中注册脚本时可能没有意义(就像您一样)。但是,它允许例如避免注册具有相同 key 参数的脚本的不同自定义控件之间的潜在冲突。

【讨论】:

我设法让它根据您的更新工作,但我必须使用以下内容: If Not ClientScript.IsClientScriptBlockRegistered(GetType(Member), "alert") Then ClientScript.RegisterClientScriptBlock(GetType(Member ), "alert", alertScript) End If @James:你说得对,我更像是 C# 类型的人,所以我把它混在一起了。正确的关键字当然是GetType(答案已更新)。 我认为你应该使用Me.GetType()的类型(在C#中是this.GetType())。

以上是关于如何在 Visual Studio 中修复 RegisterClientScriptBlock 已过时警告的主要内容,如果未能解决你的问题,请参考以下文章

如何修复错误代码 E1696?在 Windows Visual Studio 2019 中

如何修复“无法找到或打开 PDB 文件”。在 Visual Studio 2017 中

如何通过 Visual Studio 修复功能应用发布中的错误

使用 razor cshtml 渲染 XML 时,如何在 Visual Studio 中修复或删除验证

如何修复“缺少根元素”。在进行 Visual Studio (VS) 构建时?

Visual Studio - 如何修复二进制项目文件中的路径?