如何在 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
替换为您的页面类的名称)。
type和key参数用来防止在同一个页面注册同一个脚本。 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 中修复或删除验证