2011-03-08 56 views
1

我已经创建了一个简单的Web服务,用于ajax autocompleteextender控件。它工作得很好,我差不多完成了,除了有一件事情困扰我。当数据库中存在使用html字符的数据时,输出数据对用户不友好。例如“测试;放大测试”。所以当你开始在搜索框中输入“测试”时,其中一个显示的结果是“测试;放大器测试”。我想让它显示为测试&测试而不更改表中的数据。我不确定如何做到这一点。HtmlEncode来自webservice的数据

我已经尝试过htmlencode字符串项目,但总是得到构建错误。

在此先感谢您的帮助!

这里是我的web服务的胆量:行为

[WebMethod] 
    public string[] GetActiveProducts(string prefixText) 
     { 

     ddconnection = new SqlConnection("Data Source=***;Initial Catalog=***;Connect Timeout=200;Persist Security Info=True;User ID=sa;Password=***;"); 
     ddconnection.Open(); 


     int count = 10; 
     string sql = "SELECT TOP 10 title FROM Product WHERE active = '1' AND title LIKE @prefixText"; 
     SqlDataAdapter da = new SqlDataAdapter(sql, ddconnection); 
     da.SelectCommand.Parameters.Add("@prefixText", SqlDbType.VarChar, 60).Value = "%" + prefixText + "%"; 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 
     string[] items = new string[dt.Rows.Count]; 
     int i = 0; 
     foreach (DataRow dr in dt.Rows) 
     { 
      items.SetValue(dr["title"].ToString(),i); 
      i++; 
     } 
     return items; 
     } 

例。 (遗憾地模糊)

Example Image

+0

向我们展示你尝试过什么,并显示编译错误。 – 2011-03-08 20:03:47

+0

很确定''amp'不会引起任何问题......但:是存储未编码('a&b')还是编码('a & b')的数据? – 2011-03-08 20:03:47

+0

一些数据存储编码,一些数据未编码存储。 – tking 2011-03-08 20:05:32

回答

0

Items阵列的string小号HtmlEncode需要string。这就是你得到构建错误的原因。如果您单独编码各个项目,它是否能解决您的问题?

编辑:如果你做items.SetValue(Server.HtmlEncode(dr["title"].ToString()),i)我想你至少应该得到的编码工作

+0

实现此目的的最佳方法是什么?像'Server.HtmlEncode(items.SetValue(dr [“title”]。ToString(),i));'??? – tking 2011-03-08 20:46:53

+0

我更新了我的答案 – 2011-03-08 21:06:16

相关问题