Метод не существует, если объявлен на странице
У меня есть страница, определенная как:
<%@ Page Language="C#" %>
<html>
<head>
<title>Untitled 1</title>
<script type="text/c#">
public void WriteHello()
{
Response.Write("HELLO EVERYBODY");
}
</script>
</head>
<body>
<div>
<% WriteHello(); %>
</div>
</body>
</html>
Но это вызывает ошибку компиляции:
Имя WriteHello не существует в текущем контексте.
Если я перенесу код C# в отдельный файл и сошлюсь на него, он будет работать как положено. Но для этого мне нужно сохранить его в одном файле. Разве вы не можете вызывать встроенные методы, как это? Или я что-то упускаю очень очевидное?
3 ответа
Решение
script
тег, который вы кодировали, является клиентским скриптом - он будет пытаться выполнить в браузере. Код, который пытается использовать его, запускается на сервере.
Вам нужно изменить скрипт на серверный скрипт:
<script runat="server">
Вы можете написать это как:
<%
public void WriteHello()
{
Response.Write("HELLO EVERYBODY");
}
%>
Какой синтаксис вы уже использовали в другом месте.
Вы должны изменить его на
<script type="text/c#" runat="server">
В противном случае ваш код не будет скомпилирован во время выполнения