我刚刚遇到了一件奇怪的事情,我原本希望以一种不同的(逻辑)方式工作,但事实并非如此.这是一个bug还是一个"功能"?

所以我在codebehind中填充了一个下拉列表,其中包含一个列表项.根据intellisense提供的文档,每个新的ListItem都会获得2个参数,这些参数对应于其文本和值:

List<ListItem> users = new List<ListItem>();
foreach (SubscriptionUser su in subscriptionDetails.UserList)
{
    users.Add(new ListItem(su.FirstName + " " + su.LastName, su.EmailAddress));
}
ddlPrimaryContact.DataSource = users;
ddlPrimaryContact.DataBind();

现在,有人能解释一下为什么databound DropDownList将文本和值设置为完全相同(ListItem文本),而不是使用ListItem.文本作为文本和列表项.作为价值的价值?

ARGH!! http://www.freeimagehosting.net/uploads/fe65d0e7d5.jpg

还是我做错了什么?

推荐答案

嗨,当(对任何内容)进行数据绑定时,您需要设置DropDownList的DataTextField和DataValueField.在您的示例中,您应该使用以下代码

List<ListItem> users = new List<ListItem>();
foreach (SubscriptionUser su in subscriptionDetails.UserList)
{
    users.Add(new ListItem(su.FirstName + " " + su.LastName, su.EmailAddress));
}
ddlPrimaryContact.DataTextField = "Text";
ddlPrimaryContact.DataValueField = "Value";
ddlPrimaryContact.DataSource = users;
ddlPrimaryContact.DataBind();

Asp.net相关问答推荐

Razor页面上@Foreach的正确语法,其中值可以等于多个值

系统日期时间?与 System.DateTime

你能从请求变量中确定时区吗?

判断 asp.net mvc 4 应用程序中的 ssl 协议、密码和其他属性

在 EF4.1 中正确地从上下文中附加和分离实体

jquery 1.9.0 和 modernizr 无法使用 ASP.NET Web 优化框架进行缩小

Asp.Net 会话在 ashx 文件中为空

没有身份的 ASP.NET Core 2.0 承载身份验证

在不知道键名的情况下访问 JSON 对象的元素

在 ASP.NET MVC 中使用 Razor 创建可重用的 HTML 视图组件

使用 ASP.NET Web API 对 PUT 和 DELETE 的 CORS 支持

Owin.IAppBuilder不包含MapSignalR的定义

将查询参数绑定到 ASP.NET Core 中的模型

带有 2 个提交按钮/操作的 ASP.Net MVC 4 表单

如何获得 System.Diagnostics.Process 的输出?

如何从url中删除returnurl?

InvalidOperationException:无法为角色创建 DbSet,因为此类型未包含在上下文模型中

ASP.NET 按钮重定向到另一个页面

ASP.NET MVC NonAction 含义

asp.net core 2.0 - 值不能为空.参数名称:连接字符串