c# - 为什么绑定(bind) DropDownList 的功能不同于手动添加 ListItems?

标签 c# asp.net webforms

片段一

我一次将一个列表项添加到我的下拉列表中。

var ddlHour = new DropDownList {ID = "ddlHour" + i};
ddlHour.Items.Add(new ListItem("12 AM", "0:00"));
ddlHour.Items.Add(new ListItem("1 AM", "1:00"));
ddlHour.Items.Add(new ListItem("2 AM", "2:00"));
Console.WriteLine(ddlHour.Items[0].Value); 
// Prints 0:00

片段二

我将下拉列表绑定(bind)到列表项数组。

var hourItems = new[]
{
    new ListItem("12 AM", "0:00"), // "Text", "Value"
    new ListItem("1 AM", "1:00"),
    new ListItem("2 AM", "2:00")
};
var ddlHour = new DropDownList {ID = "ddlHour" + i, DataSource = hourItems};
ddlHour.DataBind();
Console.WriteLine(ddlHour.Items[0].Value); 
// Prints 12 AM

第一个片段执行后,我检查每个项目的值并找到 "0:00""1:00""2 :00"。正是我所期望的。

第二个代码段执行后,我检查每个项目的值并找到 "12 AM""1 AM""2 AM"。不是我所期望的。我的值(value)观发生了什么变化?

最佳答案

它们是一样的。唯一不同的是,如果你使用DataSource,你需要指定 DataTextField DataValueField .

...
ddlHour.DataBind();
ddlHour.DataTextField = "Text";
ddlHour.DataValueField = "Value";
Console.WriteLine(ddlHour.Items[0].Value); 

关于c# - 为什么绑定(bind) DropDownList 的功能不同于手动添加 ListItems?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28616999/

相关文章:

asp.net - 为什么 aspnet 核心从 Docker 内部的端口 80 启动?

css - 将代码隐藏中的 CSS 注入(inject)到 ASP.NET WebForm 中

c# - 我可以像在 asp.net mvc 中那样在 Webforms 项目中创建 html 助手吗?

c# - 如何在按钮单击时调用异步?

c# - 如何调用我的 dll 并在 powershell 脚本中使用它

c# - 为什么我不能像这样访问 C# 保护的成员?

c# - UWP应用程序不断抛出未经授权的访问异常

c# - 将方法作为参数传递的性能问题?

razor - 在没有 MVC 的情况下使用 ASP.NET 5(简单的 Web 表单/网页)

c# - 如果使用 Visual C++ Compiler November 2013 CTP,所有依赖项是否也需要用它编译?