Данные HtmlEncode из веб-сервиса - PullRequest
1 голос
/ 08 марта 2011

Я создал простой веб-сервис для использования с элементом управления 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;
        }

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

Example Image

1 Ответ

0 голосов
/ 08 марта 2011

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

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

...