Razor - HTML.RAW не выводит текст
Я пробовал все предлагаемые решения для других подобных вопросов, но ни один из них не работает.
По сути, я пытаюсь отобразить таблицу, заполненную данными из коллекции моделей. Это само по себе не проблема, однако я хотел бы заставить бритву генерировать ее всегда в 3 столбцах (независимо от того, сколько у нас элементов). Моя первоначальная идея заключалась в том, чтобы сделать это следующим образом:
<table class="projects-grid">
<tr>
@for(int i = 0; i< Model.Count(); i++)
{
if (i != 0 && i % 3 == 0)
{
Html.Raw("</tr><tr>");
}
var item = Model.ElementAt(i);
<td class="project-tile">
@Html.DisplayFor(modelItem => item.Title)
</td>
}
</tr>
</table>
Итак, по сути, каждый третий элемент хотел бы, чтобы Razor выводил строку "", чтобы добавить еще одну строку в таблицу. Кажется, что все работает отлично, кроме этого укуса нет в источнике страницы. В отладке я вижу, что эта строка
Html.Raw("</tr><tr>");
Фактически вызывается, но никакого результата на сгенерированной странице не существует.
Любая помощь?
Большое спасибо заранее....
Ответы
Ответ 1
Причина, по которой он не выводится, обусловлен контекстом выполняемого синтаксиса бритвы. В вашем блоке if
весь код работает так, как если бы вы были в обычном контексте С# и строке:
Html.Raw("</tr><tr>");
Возвращает MvcHtmlString
, но вы ничего не делаете с ним. Вам нужно ввести выходной контекст:
@Html.Raw("</tr><tr>");
Ответ 2
Я бы использовал работу.
Try:
<table class="projects-grid">
<tr>
@for(int i = 0; i< Model.Count(); i++)
{
if (i != 0 && i % 3 == 0)
{
<text>
@Html.Raw("</tr><tr>")
</text>
}
var item = Model.ElementAt(i);
<td class="project-tile">
@Html.DisplayFor(modelItem => item.Title)
</td>
}
</tr>
</table>
Надеюсь, что это поможет.
Ответ 3
Html.Raw фактически используется для разрыва строки, как то, что вы делаете в С#, используя /n
Пример:
<text>
@html.raw("</tr><tr>")
</text>
Надеюсь, это поможет.
Ответ 4
Html.Raw
Обтекает HTML-разметку в экземпляре HtmlString, чтобы она интерпретировалась как разметка HTML.
Например:
контроллер
public actionresult Htmlraw()
{
viewbag.message = "Hey friends lets go" + "<br />" + "for chillout";
return view();
}
Выход
@html.raw(viewbag.message);