gpt4 book ai didi

asp.net - 在 VB 代码中无法访问 WebForms ScriptManager 标记

转载 作者:行者123 更新时间:2023-12-04 15:29:27 25 4
gpt4 key购买 nike

我在 <body> 中有一个带有此标记的 aspx 页面:

<asp:ScriptManager ID="scriptManager1" runat="server" />

现在在 aspx 页面的其他地方我有一些 VB 代码(使用 <% %> 嵌入到页面中,而不是在 vb 文件后面的代码中):

scriptManager1.RegisterClientScriptBlock(Me.GetType(), "mandatoryAdditionalFieldRules_ContactType", tempStr)

问题是,我在该行收到一个编译错误,提示未声明 scriptManager1。我认为所有控件都带有 runat="server"可以在代码中访问吗?为什么这不起作用?

编辑:

哦,我想通了 - 有点。 RegisterClientScriptBlockScriptManager 的共享方法出于某种原因,所以我需要这样调用它:

ScriptManager.RegisterClientScriptBlock(Me.GetType(), "mandatoryAdditionalFieldRules_ContactType", tempStr)

将其作为实例方法调用是行不通的。

但是 - 现在我收到一条错误消息,指出 ScriptManager 类本身不存在!我在页面顶部引用了适当的命名空间:

<%@ Import Namespace="System.Web.UI" %>

为什么找不到 ScriptManager?如果我通过命名空间显式引用该类,我什至会收到错误消息:

System.Web.UI.ScriptManager.RegisterClientScriptBlock(Me.GetType(), "mandatoryAdditionalFieldRules_ContactType", tempStr)

编辑:这是一个应该重现错误的简单页面:

<%@ Page Language="VB" ContentType="text/html" ResponseEncoding="UTF-8" %>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Web.UI" %>
<%@ Import Namespace="System.IO" %>
<html>
<head>
<title>FRED</title>
</head>
<body>
<asp:ScriptManager ID="scriptManager1" runat="server" />
<%
System.Web.UI.ScriptManager.RegisterClientScriptBlock(Me.GetType(), "mandatoryAdditionalFieldRules_ContactType", "alert('fred');")
%>
</body>
</html>

编辑:按照建议尝试了这个,同样的错误:

<%@ Page Language="VB" ContentType="text/html" ResponseEncoding="UTF-8" %>

<%@ Import Namespace="System.Collections.Generic" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Web.UI" %>
<%@ Import Namespace="System.IO" %>
<script runat="server">
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As EventArgs) Handles Me.PreRender
System.Web.UI.ScriptManager.RegisterClientScriptBlock(Me.GetType(), "mandatoryAdditionalFieldRules_ContactType", "alert('fred');")
End Sub
</script>
<html>
<head>
<title>FRED</title>
</head>
<body>
<asp:ScriptManager ID="scriptManager1" runat="server" />
</body>
</html>

最佳答案

根据您尝试在方法调用中使用的参数,您看起来有点像是在混淆两个单独的类:

System.Web.UI.ScriptManager

System.Web.UI.ScriptManager docs link

System.Web.UI.ClientScriptManager

System.Web.UI.ClientScriptManager docs link

这两个中的第一个存在于 System.Web.Extensions.dll 程序集中。您是否检查过您正在引用此程序集?

第二个是通过 Page 类的 ClientScript 属性公开的。我认为您应该做的是这个(注意 C# 语法,不过应该很容易更改为 VB):

<%
this.ClientScript.RegisterClientScriptBlock(this.GetType(), "mandatoryAdditionalFieldRules_ContactType", "alert('fred');");
%>

关于asp.net - 在 VB 代码中无法访问 WebForms ScriptManager 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61530014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com