Передача NewLine (или ‹Br /›) внутри ViewData [сообщение]

Как передать Environment.NewLine (или < br />) внутри ViewData["msg"], который отображается как реальный <br /> внутри самого представления?

Я использую C # ...


person SF Developer    schedule 24.11.2010    source источник


Ответы (3)


Вы можете просто использовать

HttpUtility.HtmlEncode("<br />");

Дополнительные сведения см. здесь .

ИЗМЕНИТЬ:

Извините, но я не понял вопроса вначале. Я думал, вы хотите закодировать переданную строку. Иногда я читаю вопрос слишком быстро :)

В любом случае, чтобы полностью ответить на ваш вопрос, взгляните на эти образцы. Предположим, в вашем действии есть:

[HttpGet]
public virtual ActionResult Index() {
    ViewData["Message"] = "This is a test." + "<br />" + "Does it work?";
    return View();
}

И, на ваш взгляд, у вас есть

<p>Sample 1: <br /><%= ViewData["Message"]%></p>
<p>Sample 2: <br /><%: ViewData["Message"]%></p>

Обратите внимание на разницу между двумя конструкциями. Вы получите следующие результаты:

Sample 1: 
This is a test.
Does it work?

Sample 2: 
This is a test.<br />Does it work?

Итак, первый пример использования ответит на ваш вопрос. Ключ в том, чтобы просто не кодировать строку, в отличие от того, что я понял в начале. Вторая конструкция, использующая <%: %>, доступная, если вы используете .NET 4.0, автоматически кодирует каждую отображаемую строку.

Если вы все еще хотите использовать эту последнюю конструкцию и избежать кодирования строки, вам нужно использовать трюк. Просто сообщите конструкции, что строка уже закодирована и ее не нужно перекодировать. Для этого используйте этот пример кода

[HttpGet]
public virtual ActionResult Index() {
    ViewData["Message2"] = MvcHtmlString.Create( "This is a test." + "<br />" + "Does it work?" );
    return View();
}

и в представлении обычно используется конструкция <%: %>

<p>Sample 3: <br /><%: ViewData["Message2"]%></p>

Для получения дополнительных сведений об использовании MvcHtmlString и о том, как это работает, обратитесь к этому вопрос по ТАК.

Чао!

person Lorenzo    schedule 25.11.2010
comment
Это было одно из первых, что я попробовал, но так и не сработал. ViewData [Сообщение] = Это тест. + HttpUtility.HtmlEncode (‹br /›) + Работает ?; отображает ›› Это тест.brРаботает ли он? Даже если я добавлю HttpUtility.HtmlDecode в представление, отображающее фактическое сообщение, я получу ›› Это тест. ‹Br /› Работает? ... хммм - person SF Developer; 25.11.2010
comment
Граци Лоренцо ... это сработало отлично !!! Кстати, это хорошо работает с ‹BR/›, но НЕ с \ r \ n - person SF Developer; 28.11.2010

Вы пробовали \ n или \ r внутри самой строки ViewData?

person Richard Key    schedule 24.11.2010

Использовать это:

TempData["MsgString"] = MvcHtmlString.Create("No Data" + "<br />" + "For Something");

Или с переменными:

TempData["MsgString"] = MvcHtmlString.Create(Strings.StrNoData + "<br />" + Strings.StrSomething);
person Hector    schedule 05.12.2018