Как получить HTML-текст из хранимой процедуры в C # - PullRequest
1 голос
/ 11 марта 2012

У меня есть многострочный текст в формате html, хранящийся в базе данных, например:

@"<font  size='1'>  <p><span ...='25' width='120' src='http://www.mysite.com/Images/new-site-logo.jpg'/></span></p>  <h2 ...</table></font>"

, и у меня есть хранимая процедура для извлечения этого из базы данных.

В C # я вызываюхранимая процедура в myclass.cs примерно так:

public string GetEhtmlContent(int id)
{
    ...
    SqlParameter HTMLParam = new SqlParameter("@HtmlEmail","");
    HTMLParam.Direction = ParameterDirection.Output;
    cmd.Parameters.Add(HTMLParam);
    cmd.Parameters.Add(new SqlParameter("@id", id));
    cmd.ExecuteNonQuery();
    htmlContent = HttpUtility.HtmlEncode(HTMLParam.Value);
    ...
}

Она получает идентификатор в качестве входного параметра и должна выдавать HTML в качестве вывода, но все, что я получаю, это "@", который является первым символом в HTMLParam.value.

Кто-нибудь может мне помочь, как мне получить весь HTML-контекст в моем HTMLParam?

Заранее спасибо,
Мона

Ответы [ 2 ]

1 голос
/ 11 марта 2012

Как выглядит ваш список параметров хранимой процедуры в T-SQL ??

Позвольте мне угадать - у вас, вероятно, есть что-то вроде

CREATE PROCEDURE dbo.YourHtmlRetrievelProc    
   ...
   @HtmlEmail VARCHAR OUTUPT

или что-то в этом роде.

Любой varchar, определенный как параметр без , в котором длина по умолчанию равна 1 символ в длину - скорее всего, поэтому вы получаете только 1 символ назад ... .

Вам необходимо указать длину:

@HtmlEmail VARCHAR(2000) OUTUPT

или даже:

@HtmlEmail VARCHAR(MAX) OUTUPT

По той же причине я бы также изменил ваш код C # с:

SqlParameter HTMLParam = new SqlParameter("@HtmlEmail","");

до:

SqlParameter HTMLParam = new SqlParameter("@HtmlEmail", SqlDbType.VarChar, 2000);

Необходимо убедиться, что вы используете ту же длину, которая определена в заголовке хранимой процедуры. Используйте Int.MaxValue, если вы определили VARCHAR(MAX) как параметр в T-SQL

0 голосов
/ 11 марта 2012

используйте HTMLParam.Size, чтобы указать размер значения параметра

...