Подтвердить что ты не робот

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>");

Фактически вызывается, но никакого результата на сгенерированной странице не существует.

Любая помощь? Большое спасибо заранее....

4b9b3361

Ответ 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);