MVC3 помещает новую строку в текст ViewBag - PullRequest
7 голосов
/ 08 февраля 2012

У меня есть веб-приложение MVC3 C # .Net. Я перебираю DataTable. Некоторые строки импортируются нормально, некоторые нет. Я хочу отправить список ошибок обратно в представление в формате списка. Я присваиваю следующий текст свойству ViewBag

Input error on Row(1) Cell(3) Input string was not in a correct format.<br/> Input error on Row(4) Cell(3) Input string was not in a correct format.<br/>

Я надеялся, что br напишет в HTML разрыв строки. Это не. Я хочу, чтобы сообщение об ошибке выглядело так

Input error on Row(1) Cell(3) Input string was not in a correct format.
Input error on Row(4) Cell(3) Input string was not in a correct format.

Есть идеи?

Ответы [ 2 ]

14 голосов
/ 08 февраля 2012

Когда вы бросаете в свой взгляд, используйте

@Html.Raw(ViewBag.Test)

вместо

@ViewBag.Test

Это будет означать для компилятора, что строка является html и ее не нужно кодировать как таковой.

8 голосов
/ 08 февраля 2012

Используйте string[] для хранения ваших ошибок.Таким образом, они представляют собой правильно сформированный и различимый набор ошибок вместо одной длинной строки.

В вашем контроллере, инициализируя свойство ViewBag:

ViewBag.Errors = new string[] { "First error", "Second error" };

в вашем представлении,отображая эти ошибки:

@foreach (string error in ViewBag.Errors)
{
    @Html.Label(error)
    <br />
}

Разделение проблем

Вы не должны обрабатывать разметку в вашем контроллере (то есть разрывы строк или любые другие элементы DOM), Презентация должна обрабатываться исключительно представлением .Вот почему было бы лучше передать string[].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...