【问题标题】:How to unescape special character when populating dropdownlist from a sql query从 sql 查询填充下拉列表时如何取消转义特殊字符
【发布时间】:2015-01-13 03:42:28
【问题描述】:

我有以下填充下拉列表的 C# 代码:

public void PopulateInsurance()
{
    SqlCommand cmd = new SqlCommand("GetInfo", new SqlConnection(ConfigurationManager.AppSettings["connectionstr"]));
    cmd.Connection.Open();

    SqlDataReader ddles = default(SqlDataReader);
    ddles = cmd.ExecuteReader();

    ddlI.Items.Clear();
    ddlI.DataSource = ddles;
    ddlI.DataValueField = "id";
    ddlI.DataTextField = "title";
    ddlI.DataBind();
    //set the default value for the drop down
    ListItem Item = new ListItem();
    Item.Text = "Any";
    Item.Value = "0";
    ddlInsurance.Items.Insert(0, Item);

    cmd.Connection.Close();
    cmd.Connection.Dispose();
}

SQL 表中的一行具有以下值:

id     title
9      Worker'

下拉列表显示如上所示的标题(' -> 其中一个单引号'

如何修改代码,使其采用 ' 或任何其他特殊字符并将其取消转义以显示该字符,在此示例中为 '

【问题讨论】:

  • 您的数据库中根本不应该有这些字符。你的逃跑在别处被打破了。
  • 查看 Decoding all HTML Entities 并了解如何使用 SqlDataReader。
  • 我们遇到了类似的问题(某人的姓有撇号)。当我们将数据存储在数据库中时,我们使用单引号对其进行转义。例如:奥康纳。

标签: c# sql sql-server


【解决方案1】:

system.Uri 类包含一个 UnescapeDataString 方法。这会解决你的问题吗?

http://msdn.microsoft.com/en-us/library/system.uri.unescapedatastring(v=vs.110).aspx

【讨论】:

  • 也许吧。但我想取消的不是 Uri,而是 SQL 表中的列值......
  • 您需要修改代码以手动添加项目而不使用数据绑定。您想要 Unescape 的值不是 uri 的事实并不重要
  • 我会测试一下。谢谢。
猜你喜欢
  • 1970-01-01
  • 2012-02-11
  • 2012-08-23
  • 1970-01-01
  • 1970-01-01
  • 2011-09-25
  • 1970-01-01
  • 1970-01-01
  • 2011-02-21
相关资源
最近更新 更多