Метод не существует, если объявлен на странице - PullRequest
1 голос
/ 14 сентября 2011

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

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

5 голосов
/ 14 сентября 2011

Код script, который вы кодировали, является клиентским сценарием - он попытается выполнить в браузере .Код, который пытается использовать его, запускается на сервере .

. Вам нужно изменить скрипт на server side script:

<script runat="server">

Вы можете написать это как:

<%
    public void WriteHello()
    {
        Response.Write("HELLO EVERYBODY");
    }
%>

Какой синтаксис вы уже использовали в другом месте.

1 голос
/ 14 сентября 2011

Вам нужно изменить его на

<script type="text/c#" runat="server">

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

1 голос
/ 14 сентября 2011

Вы пропали без вести

<script runat=server type="text/c#"> 
...