У меня есть страница aspx с этим тегом в <body>
:
<asp:ScriptManager ID="scriptManager1" runat="server" />
Теперь в другом месте страницы aspx у меня есть некоторый VB-код (встроенный в страницу с использованием <% %>
, а не в код за файлом vb):
scriptManager1.RegisterClientScriptBlock(Me.GetType(), "mandatoryAdditionalFieldRules_ContactType", tempStr)
Проблема в том, что я получаю ошибку компиляции в этой строке, говорящую, что scriptManager1 не объявлен. Я думал, что все элементы управления с runat="server"
доступны в коде? Почему это не работает?
edit:
О, я понял - вроде как. 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)
edit: вот простая страница, которая должна воспроизвести ошибку:
<%@ 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>
edit: пробовал как предлагается та же ошибка:
<%@ 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>