Метод не существует, если объявлен на странице

У меня есть страница, определенная как:

<%@ 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">

В противном случае ваш код не будет скомпилирован во время выполнения

Вам не хватает

<script runat=server type="text/c#"> 
Другие вопросы по тегам