【发布时间】:2020-08-15 04:57:59
【问题描述】:
我在<body>中有一个带有这个标签的aspx页面:
<asp:ScriptManager ID="scriptManager1" runat="server" />
现在在 aspx 页面的其他地方我有一些 VB 代码(使用 <% %> 嵌入到页面中,而不是在 vb 文件后面的代码中):
scriptManager1.RegisterClientScriptBlock(Me.GetType(), "mandatoryAdditionalFieldRules_ContactType", tempStr)
问题是,我在该行收到一个编译错误,说 scriptManager1 未声明。我认为所有带有runat="server" 的控件都可以在代码中访问?为什么这不起作用?
编辑:
哦,我想通了 - 有点。 RegisterClientScriptBlock 是ScriptManager 的共享方法,出于某种原因,所以我需要这样称呼它:
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>
【问题讨论】: