无法将C#列表绑定到ASP.net中的DropDownList

问题描述

过去一个小时左右,我一直在撞墙,因为我无法弄清楚在这个看似简单的过程中我做错了什么。

这是ASPX页面的外观:

<%@ Page Title="Teams" Language="C#" AutoEventWireup="true" CodeBehind="TeamEntry.aspx.cs" Inherits="Team.Model" Runat="server" Debug="true"%>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    
</head>
<body>
    <form id="form1" runat="server">
        <div>
        </div>
        <asp:DropDownList
            runat="server" 
            ID="DDL_Teams" 
            Width="183px">
        </asp:DropDownList>
        <input id="Text1" type="text" /><input id="Submit1" type="submit" value="submit" />
    </form>
</body>
</html>

这是背后的代码

using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Diagnostics;
using Team;

namespace Team
{
    public partial class TeamEntry : System.Web.UI.Page
    {
        protected void Page_Load(object sender,EventArgs e)
        {
            if (!IsPostBack) 
            {
                using (var DDL_Teams = new DropDownList())
                {
                    DDL_Teams.DataSource = TeamsList;
                    DDL_Teams.DataBind();
                }
            }
        }

        List<string> TeamsList = new List<string>()
        {
            "Alpha","Bravo","Charlie","Delta"
        };
    }
}

...但是当我尝试运行该页面时,我看到的只是an empty dropdown list

我已经尝试了其他StackOverflow问题中提到的其他几种方法,这些方法与将数据绑定到下拉列表有关(例如,在this page上列出的方法)都没有用。任何帮助将不胜感激。

解决方法

每次根据此代码创建一个新的下拉列表

using (var DDL_Teams = new DropDownList())

这就是为什么没有绑定发生的原因。

但是需要使用HTML中创建的下拉列表ID。 请在TeamEntry.aspx.cs中使用此代码

protected void Page_Load(object sender,EventArgs e)
        {
            if (!IsPostBack)
            {

                DDL_Teams.DataSource = TeamsList;
                DDL_Teams.DataBind();

            }


        }
        List<string> TeamsList = new List<string>()
        {
            "Alpha","Bravo","Charlie","Delta"
        };
,

在服务器端代码上删除您的下拉列表:

if (!IsPostBack) 
        {
            //using (var DDL_Teams = new DropDownList()) - Comment this line
            {
                DDL_Teams.DataSource = TeamsList;
                DDL_Teams.DataBind();
            }
        }

您的Web表单上已经有DDL_Teams。尝试清理解决方案并重新构建。