HtmlEncode данные из веб-сервиса

Я создал простую веб-службу для использования с элементом управления ajax autocompleteextender. Это прекрасно работает, я почти закончил, но меня беспокоит одна вещь. Когда в базе данных есть данные, использующие символы html, выходные данные неудобны для пользователя. Например, «Тест; тест усилителя». Поэтому, когда вы начинаете вводить «Test» в поле поиска, один из отображаемых результатов — «Test ;amp Test». Я бы хотел, чтобы вместо этого он отображался как Test & Test без изменения данных в таблице. Я точно не знаю, как это сделать.

Я пытался htmlencode строковые элементы, но всегда получаю ошибки сборки.

Заранее спасибо за помощь!

Вот кишки моего веб-сервиса:

 [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;
        }

Пример поведения. (извините, что пришлось замазать)

Пример изображения


person Tyler Miranda    schedule 08.03.2011    source источник
comment
Покажите нам, что вы пробовали, и покажите ошибку компилятора.   -  person John Saunders    schedule 08.03.2011
comment
Почти уверен, что ;amp не вызовет никаких проблем... но: данные хранятся незакодированными (a & b) или закодированными (a & b)?   -  person Marc Gravell    schedule 08.03.2011
comment
некоторые данные хранятся в закодированном виде, а некоторые — в незакодированном.   -  person Tyler Miranda    schedule 08.03.2011


Ответы (1)


Items представляет собой массив из string, а HtmlEncode принимает string. Вот почему вы получаете ошибку сборки. Если вы закодируете отдельные элементы отдельно, решит ли это вашу проблему?

РЕДАКТИРОВАТЬ: Если вы сделаете items.SetValue(Server.HtmlEncode(dr["title"].ToString()),i), я думаю, вы должны хотя бы заставить кодировку работать

person Simen S    schedule 08.03.2011
comment
Каков наилучший способ добиться этого? Нравится Server.HtmlEncode(items.SetValue(dr["title"].ToString(),i)); ??? - person Tyler Miranda; 08.03.2011