Передача NewLine (или <Br />) внутри ViewData ["msg"] - PullRequest
1 голос
/ 25 ноября 2010

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

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

Ответы [ 3 ]

9 голосов
/ 25 ноября 2010

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

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 и о том, как он работает, см. В этом вопросе о SO.

Ciao!

0 голосов
/ 05 декабря 2018

Используйте это:

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

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

TempData["MsgString"] = MvcHtmlString.Create(Strings.StrNoData + "<br />" + Strings.StrSomething);
0 голосов
/ 25 ноября 2010

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

...