【问题标题】:DataBinding: 'System.Char' does not contain a property with the nameDataBinding:“System.Char”不包含具有名称的属性
【发布时间】:2012-02-06 00:35:32
【问题描述】:

我在整个网站上搜索了错误

我在绑定下拉列表时收到此错误。

DataBinding:“System.Char”不包含名为“APPRAISER_ID”的属性

这是我的代码:

DataSet DSEmployee = new DataSet();
DSEmployee = ws_service.GetReportingDtl(user);
ddlEmployee.DataTextField = "APPRAISER_ID";
ddlEmployee.DataValueField = "APPRAISER_ID";
ddlEmployee.DataSource = DSEmployee.Tables[0].DefaultView.ToString();
ddlEmployee.DataBind();

在我的网络服务中。

string strQ = "select employee_id,appraiser_id from kirti_pms_reporting where appraiser_id='" + varAppraiserId.ToString() + "'";

我的下拉列表内联代码是

<asp:DropDownList ID="ddlEmployee" runat="server" AutoPostBack="true"  CssClass="vlu">

我在这里错过了什么?相同的代码在另一个 aspx 页面中运行良好。

【问题讨论】:

  • 你有一个 SQL 注入漏洞。

标签: c# asp.net c#-2.0


【解决方案1】:

问题是你绑定了一个字符串到你的DataSource

ddlEmployee.DataSource = DSEmployee.Tables[0].DefaultView.ToString();

并且字符串没有属性APPRAISER_ID

select employee_id,appraiser_id from kirti_pms_reporting where appraiser_id='" + 
varAppraiserId.ToString() + "'";

这不是一个好主意,因为您可能会遇到 SqlInjection。

【讨论】:

  • 注意:“System.Char”错误消息的原因是数据源应该是可枚举的。那个字符串 is 是可枚举的:它是一个字符列表。而且 Char 没有那个“Appraiser_id”。
  • @HansKesting 字符串不仅仅是 .NET 中的字符列表或字符数组。
  • @dknaack - 不,字符串不是字符列表,但它 IEnumerable&lt;Char&gt;,这在这里很重要。
  • @HansKesting 是的System.String 实现了IEnumerable&lt;char&gt;,但也实现了其他接口。对
猜你喜欢
  • 2011-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-27
  • 2018-03-21
  • 1970-01-01
相关资源
最近更新 更多