Переменная не существует в текущем контексте - PullRequest
0 голосов
/ 25 июня 2011

Я новичок в C # .NET. Я хотел бы спросить, как это работает ... Я хочу просто показать возрастной диапазон от 1 до 100.

Внутри файла .aspx я поместил этот код, я использовал привязку данных для переменной listAge.

<asp:DropDownList ID="AgeDropDown" runat="server">
     <%# listAge %>
</asp:DropDownList>

Вот код для него:

protected void Page_Load(object sender, EventArgs e)
{            
    for (int i = 1; i < 101; i++)
    {
        string listAge;
        listAge = "<asp:ListItem>"+ i +"</asp:ListItem>";
    }
}

Ошибка, отображаемая внутри .aspx:

Ошибка при создании элемента управления: AgeDropDown - Блоки кода не поддерживаются в этом контексте.

Из-за переменной listAge?

Спасибо за помощь!

Ответы [ 3 ]

2 голосов
/ 25 июня 2011

Удалите раздел <%%> в .aspx, и в коде позади него вы должны сделать что-то вроде этого:

protected void Page_Load(object sender, EventArgs e)
{         
    AgeDropDown.Items.Clear();   
    for (int i = 1; i < 101; i++)
    {
        AgeDropDown.Items.Add(new ListItem(i.ToString(),i.ToString()));
    }
}

С другой точки зрения в вашем коде есть несколько недостатков:

  1. Вы генерируете теги ASP.NET в коде позади.ASP-теги обрабатываются на сервере и отображаются в HTML-теги.Вы практически вставляли тег в html, который браузеры будут отображать как простой текст, поскольку он не является допустимым тегом HTML.
  2. Вы создавали новую переменную listAge на каждой итерации цикла for.Даже если код будет работать, он будет отображать только последний элемент
1 голос
/ 25 июня 2011

Вы можете использовать версию сервера AgeDropDown.

ListItem li;
for (int i = 1; i < 101; i++)
{
    li = new ListItem(i.ToString(), i.ToString());
    AgeDropDown.Items.Add(li);
}
0 голосов
/ 25 июня 2011

Это в asp.net или MVC?

Возможно

... <% # listAge%>

должно быть

... <% = listAge%>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...