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

C# 变量在当前上下文中不存在,c#,.net,asp.net,variables,C#,.net,Asp.net,Variables,我是C#NET的新手。我想问一下这是怎么回事。。。我想要的只是显示从1到100的年龄选择 在我放这段代码的.aspx文件中,我对变量列表使用了数据绑定 <asp:DropDownList ID="AgeDropDown" runat="server"> <%# listAge %> </asp:DropDownList> 下面是它背后的代码: protected void Page_Load(object sender, EventArgs e

我是C#NET的新手。我想问一下这是怎么回事。。。我想要的只是显示从1到100的年龄选择

在我放这段代码的
.aspx
文件中,我对变量
列表使用了数据绑定

<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>";
    }
}
受保护的无效页面加载(对象发送方,事件参数e)
{            
对于(int i=1;i<101;i++)
{
字符串列表;
listAge=“+i+”;
}
}
.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()));
    }
}
受保护的无效页面加载(对象发送方,事件参数e)
{         
AgeDropDown.Items.Clear();
对于(int i=1;i<101;i++)
{
AgeDropDown.Items.Add(新列表项(i.ToString(),i.ToString());
}
}
从另一个角度来看,您的代码中有几个缺陷:

  • 您正在代码隐藏中生成ASP.NET标记。ASP标记在服务器上处理,并呈现为html标记。实际上,您在html中插入了一个标记,浏览器将以简单文本的形式呈现,因为它不是有效的html标记
  • 您在for循环的每次迭代中都创建了一个新的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()));
        }
    }
    
    受保护的无效页面加载(对象发送方,事件参数e)
    {         
    AgeDropDown.Items.Clear();
    对于(int i=1;i<101;i++)
    {
    AgeDropDown.Items.Add(新列表项(i.ToString(),i.ToString());
    }
    }
    
    从另一个角度来看,您的代码中有几个缺陷:

  • 您正在代码隐藏中生成ASP.NET标记。ASP标记在服务器上处理,并呈现为html标记。实际上,您在html中插入了一个标记,浏览器将以简单文本的形式呈现,因为它不是有效的html标记
  • 您在for循环的每次迭代中都创建了一个新的listAge变量。即使代码可以工作,它也只会显示最后一项

  • 这是asp.net还是MVC

    大概

    应该是


    这是在asp.net还是在MVC中

    大概

    应该是


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

    ListItem li;
    for (int i = 1; i < 101; i++)
    {
        li = new ListItem(i.ToString(), i.ToString());
        AgeDropDown.Items.Add(li);
    }
    
    列表项li;
    对于(int i=1;i<101;i++)
    {
    li=新列表项(i.ToString(),i.ToString());
    AgeDropDown.Items.Add(li);
    }
    
    您可以使用服务器版本的
    AgeDropDown

    ListItem li;
    for (int i = 1; i < 101; i++)
    {
        li = new ListItem(i.ToString(), i.ToString());
        AgeDropDown.Items.Add(li);
    }
    
    列表项li;
    对于(int i=1;i<101;i++)
    {
    li=新列表项(i.ToString(),i.ToString());
    AgeDropDown.Items.Add(li);
    }
    
    我只是像这样编辑代码
    AgeDropDown.Items.Add(newlistItem(I.ToString())并且它工作!顺便说一句,double
    i.ToString()
    的作用是什么?第二个参数是与项目相关联的值,它可以是不同的值,如id或something@EronListItem的一个构造函数具有以下签名ListItem(字符串文本,字符串值),它创建了一个类似于此文本的ListItem。如果显示的文本与存储在数据库中的值不同,则使用此选项。例如,国家下拉列表显示国家名称,但在数据库中存储国家ID(0在数据库中;美国在下拉框中)。我只需编辑如下代码
    AgeDropDown.Items.Add(new ListItem(I.ToString())并且它工作!顺便说一句,double
    i.ToString()
    的作用是什么?第二个参数是与项目相关联的值,它可以是不同的值,如id或something@EronListItem的一个构造函数具有以下签名ListItem(字符串文本,字符串值),它创建了一个类似于此文本的ListItem。如果显示的文本与存储在数据库中的值不同,则使用此选项。E.x.国家下拉列表显示国家名称,但在数据库中存储国家ID(数据库中为0;下拉框中为美国)。