Кодирование HTML в T-SQL?

это произошло со мной, потому что я попытался выполнить access UI компонент в another thread insted of UI thread

, как этот

private void button_Click(object sender, RoutedEventArgs e)
{
    new Thread(SyncProcces).Start();
}

private void SyncProcces()
{
    string val1 = null, val2 = null;
    //here is the problem 
    val1 = textBox1.Text;//access UI in another thread
    val2 = textBox2.Text;//access UI in another thread
    localStore = new LocalStore(val1);
    remoteStore = new RemoteStore(val2);
}

, чтобы решить эту проблему, обернуть любой вызов ui внутри , о чем упоминал Кандид в своем ответе

private void SyncProcces()
{
    string val1 = null, val2 = null;
    this.Dispatcher.Invoke((Action)(() =>
    {//this refer to form in WPF application 
        val1 = textBox.Text;
        val2 = textBox_Copy.Text;
    }));
    localStore = new LocalStore(val1);
    remoteStore = new RemoteStore(val2 );
}

16
задан Leo Moore 12 March 2009 в 16:27
поделиться

5 ответов

У нас есть устаревшая система, которая использует триггер и dbmail для отправки электронной почты в кодировке HTML при вводе таблицы, поэтому нам требуется кодирование при создании электронной почты. Я заметил, что в версии Лео есть небольшая ошибка, которая кодирует & in & lt; и & gt; Я использую эту версию:

CREATE FUNCTION HtmlEncode
(
    @UnEncoded as varchar(500)
)
RETURNS varchar(500)
AS
BEGIN
  DECLARE @Encoded as varchar(500)

  --order is important here. Replace the amp first, then the lt and gt. 
  --otherwise the &lt will become < 
  SELECT @Encoded = 
  Replace(
    Replace(
      Replace(@UnEncoded,'&','&'),
    '<', '&lt;'),
  '>', '&gt;')

  RETURN @Encoded
END
GO
26
ответ дан 30 November 2019 в 15:07
поделиться

Вы не должны чинить строку в SQL. Лучший путь состоит в том, чтобы использовать функцию в ASP.net по имени HtmlEncode, это приготовит специальные символы, которые вызывают проблемы, которые Вы видите, посмотрите пример ниже. Я надеюсь, что это помогает.

string htmlEncodedStr = System.Web.HttpUtility.HtmlEncode(yourRawStringVariableHere);
string decodedRawStr =  System.Web.HttpUtility.HtmlDecode(htmlEncodedStr);

Редактирование: Так как Вы - привязка данных это из таблицы данных. Используйте встроенное выражение для вызова HTMLEncode в разметке GridView или безотносительно управления использование, и это все еще удовлетворит требование привязки данных. Посмотрите пример ниже. Alternativly можно циклично выполнить каждую запись в объекте таблицы данных и обновить каждую ячейку с закодированной строкой HTML до привязки данных.

<%# System.Web.HttpUtility.HtmlEncode(Eval("YourColumnNameHere")) %>
15
ответ дан 30 November 2019 в 15:07
поделиться

Я не думаю, что данные в базе данных должны знать или заботиться о пользовательском интерфейсе. Проблемы дисплея должны быть обработаны уровнем представления. Я не хотел бы видеть любой HTML, смешанный в базу данных.

8
ответ дан 30 November 2019 в 15:07
поделиться

При отображении строки в сети можно закодировать ее Сервером. HTMLEncode ().

при хранении строки в базе данных удостоверьтесь, что поле базы данных является "nchar" вместо "символа". Это позволит этому хранить строки unicode.

, Если Вы не можете управлять базой данных, можно "сгладить" строку к ASCII с Кодированием. ASCII.GetString.

2
ответ дан 30 November 2019 в 15:07
поделиться

Хорошо вот то, что я сделал. Я создал простую функцию для обработки его. Его совсем не завершенный, но по крайней мере обрабатывает стандарт <>& символы. Я просто добавлю к нему, поскольку я продвигаюсь.

CREATE FUNCTION HtmlEncode
(
    @UnEncoded as varchar(500)
)
RETURNS varchar(500)
AS
BEGIN
    DECLARE @Encoded as varchar(500)   
    SELECT @Encoded = Replace(@UnEncoded,'<','&lt;')
    SELECT @Encoded = Replace(@Encoded,'>','&gt;')
    SELECT @Encoded = Replace(@Encoded,'&','&amp;')   
    RETURN @Encoded    
END

я могу тогда использовать:

Select Ref,dbo.HtmlEncode(RecID) from Customers

Это дает мне HTML безопасный Рекордный идентификатор. Существует, вероятно, созданный в функции, но я не могу найти его.

-1
ответ дан 30 November 2019 в 15:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: