2010-09-11 3 views
3

По какой-то причине я получаю эту ошибку при попытке проверить кодовую страницу на своем компьютере.Неверное имя элемента управления ASP.NET Ошибка StartTag

Возможно, это связано с неправильной установкой IIS, но я не могу понять, в чем проблема.

я получаю следующее сообщение об ошибке:

error on line 1 at column 2: StartTag: invalid element name

Вот моя Default.aspx:

<%@ Page Language="C#" %> 

<html> 

<head> 

<title>Plating Trees</title> 

<script runat=”server”> 
protected void Page_Load(Object Source, EventArgs E) 
{ 

/* Begin C# Code!*/ 

Tree tree1 = new Tree(); 

tree1.Grow(3); 

tree1.Message(); 

} 

</script> 

</head> 

<body> 

<p><asp:label runat=”server” id=”Output” /></p> 

</body> 

</html> 

Tree.cs:

/* A simple C# class! */ 

public class Tree 
{ 

    public int height = 0; 

    public void Grow(int h) 
    { 
     height += h; 
    } 

    public string Message() 
    { 
     Output.Text = "The height of tree1 is:<br/>” + tree1.height + feet"; 
    } 

} 

ответ

1

Не уверен, если это причина вашей проблемы, но двойные кавычки вокруг ваших атрибутов и кода выглядят недействительными.

<script runat=”server”> 
<p><asp:label runat=”server” id=”Output” /></p> 

должно быть:

<script runat="server"> 
<p><asp:label runat="server" id="Output" /></p> 

и

Output.Text = "The height of tree1 is:<br/>” + tree1.height + feet"; 

должно быть:

Output.Text = "The height of tree1 is:<br/>" + tree1.height + "feet"; 
+0

Упс, не могу поверить, что я не понимал, что , благодаря! – Qcom

1

Ваш вопрос похож на этот предыдущий вопрос в StackOverflow: “StartTag: invalid element name” in default.aspx, который С.Е. ems как проблема конфигурации IIS.

Из ссылке:

When I went into the ASP.NET tab for the virtual directory I noticed the ASP.NET version was not selected (it was an empty combo box). Choosing the .NET framework version did the trick.

Посмотрите на него, он может решить вашу проблему :)

+0

Спасибо, это тоже помогает, но у меня все еще есть проблема! :) Я все-таки работаю. – Qcom

1

Основная проблема заключается в том, что ваш Tree класс не имеет доступа к Output, потому что собственность принадлежит к другому объекту, Default.aspx. Вы должны позвонить по номеру Output.Text из Default.aspx вместо Tree. Кроме того, я думаю, что Джеф прав о » против " Поэтому редактировать Page_Load следующим образом:.

В вашей Default.aspx

<script runat="server"> 
protected void Page_Load(Object Source, EventArgs E) 
{ 
    /* Begin C# Code!*/ 
    Tree tree1 = new Tree(); 
    tree1.Grow(3); 
    Output.Text = tree1.Message(); 
} 
</script> 

В Message() вам нужно удалить Output.Text Затем вы не можете использовать класс Tree, например tree1.height, поэтому измените его на this.height или желательно просто height. Также удалите., потому что вы еще не определили его. Обратите внимание, что в этом методе также есть ". Наконец, выньте последние ", который находился справа от feet.Изменить следующим образом:

В вашем Test классе

public string Message() 
{ 
    return "The height of tree1 is:<br/>" + height; 
} 

Вы можете сохранить все остальное то же самое, но лично я бы переместить <script runat="server"> блок чуть ниже <%@ Page Language="C#" %>

Кроме того, я подумайте, что у вас есть ошибки в вашей логике, но я уверен, что вы можете понять это, как только вы пройдете мимо этого материала.

(я побежал от моего VS 2008 IDE)

+0

Спасибо, что вы имеете в виду ошибки в моей логике? Вы имеете в виду то, как я настраиваю суперпростую «программу»? – Qcom

+0

@BOSS: Я имел в виду, что когда я его запускал, результат был не таким, каким вы намеревались, потому что ваш метод Message() все еще выключен. См. Мое обновление для решения. – JohnB

+0

@BOSS, насколько я могу настроить эту программу, я думаю, что большинство программистов ASP.NET предпочитают использовать тип страницы «Код позади», поэтому ваши методы находятся в отдельном файле с именем 'Default.aspx.cs' – JohnB

0

@BOSS, возможно, вам нужно запустить aspnet_regiis инструмент для перерегистрировать ASP.NET в вашем IIS.

Зайдите в свою командную строку .NET Framework и запустите «aspnet_regiis -i», чтобы сделать это.

Ссылка: ASP.NET IIS Registration Tool (Aspnet_regiis.exe)

Кроме того, обратите внимание на следующее, если у вас есть несколько веб-сайт в IIS:

The -i flag causes the aspnet_regiis command to perform its work on every website on the box, not just the one that needs it. As the .NET framework 2.0 begins to ship there will be more developers and production servers running both version of the framework. Running the aspnet_regiis command with the -i flag will associate all websites on the box with the framework from where the command was run (there is one version of the aspnet_regiis command for every installed version of the .NET framework). It is also useful to note that the -i flag will reset auto-generated values with immediate impact on forms based logins and viewstate checksums. If you run the command with the -i flag on a live production server you may very well interupt the applications of logged in users of other applications on the same box. The “-i“ flavor of the command should never be run in a production environment unless there are no active users logged on, and all websites on the box happen to be on the same .NET framework version.

От: Running "aspnet_regiis -i" Not Always The Best Choice

Смежные вопросы