问题描述
过去一个小时左右,我一直在撞墙,因为我无法弄清楚在这个看似简单的过程中我做错了什么。
这是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
。尝试清理解决方案并重新构建。