变量在当前上下文中不存在

时间:2011-06-25 08:31:11

标签: c# .net asp.net variables

我是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 个答案:

答案 0 :(得分:2)

删除&lt; %%&gt; .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. 您正在for循环的每次迭代中创建一个新的listAge变量。即使代码可以工作,它也只显示最后一项

答案 1 :(得分:1)

您可以使用AgeDropDown的服务器版本。

ListItem li;
for (int i = 1; i < 101; i++)
{
    li = new ListItem(i.ToString(), i.ToString());
    AgeDropDown.Items.Add(li);
}

答案 2 :(得分:0)

这是在asp.net还是MVC?

可能

...&lt;%#listAge%&gt;

应该是

...&lt;%= listAge%&gt;