当前上下文中不存在变量

本文关键字:不存在 变量 上下文 | 更新日期: 2023-09-27 18:00:27

我是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

谢谢你的帮助!

当前上下文中不存在变量

删除<%%>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变量。即使代码可以工作,它也只显示最后一项

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

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

这是在asp.net还是MVC中?

可能是

<%#listAge%>

应该是

<%=listAge%>