Привет, это действительно странно !!
Но посмотрите на следующий код asp:
<div runat="server" id="MainDiv">
<%foreach (string str in new string[]{"First#", "Second#"})
{ %>
<div id="<%=str.Replace("#","div") %>">
</div>
<%} %>
</div>
Теперь, если вы поместите этот код на любую веб-страницу (и не беспокойтесь о морали этого кода, я сделал это просто, чтобы показать идею)
Вы получите эту ошибку:
Сообщение об ошибке компилятора: CS1518: ожидаемый класс, делегат, перечисление, интерфейс или структура
Конечно, ошибка не имеет ничего общего с реальной проблемой, я искал код, сгенерированный asp.net и выяснил следующее:
private void @__RenderMainDiv(System.Web.UI.HtmlTextWriter @__w, System.Web.UI.Control parameterContainer)
{
@__w.Write("\r\n ");
#line 20 "blabla\blabla\Default.aspx"
foreach (string str in new string[] { "First#", "Second#" })
{
#line default
#line hidden
@__w.Write("\r\n <div id=\"");
#line 22 "blabla\blabla\Default.aspx"
@__w.Write(str.Replace("#", "div"));
#line default
#line hidden
@__w.Write("\">\r\n ");
}
Это код, который был сгенерирован со страницы asp, и это метод, который предназначен для визуализации нашего div (MainDiv), я обнаружил, что отсутствует скобка "}", которая закрывает метод или (для петля). * * +1013
Теперь проблема состоит из трех частей:
1- сначала у вас должен быть серверный элемент управления (в нашем случае это MainDiv), и я не уверен, что это только тег div.
2- HTML-элемент управления внутри серверного элемента управления и код внутри него с использованием двойной кавычки (например, <div id="<%=str
вместо <div id='<%=str
.
3-Любое ключевое слово, которое имеет квадратные скобки, например:
теперь удаление любой детали решит проблему !!!
как это происходит ??
есть идеи?
Кстати: пожалуйста, помогите мне сделать вопрос более очевидным, потому что я не смог найти лучшие слова для описания проблемы.
Похоже, мой вопрос не ясен !!
Мой вопрос: какие шаги выполняет asp.net для генерации такого неправильного кода ??
как это происходит !!
Я не хочу решения для исключения, я уже решил его, используя одинарные кавычки.