Отображение строки HTML из модели в представлении MVC Razor

У меня есть поданная модель, которая возвращает строку HTML с тегом BR для строки break, но как отобразить этот HTML-код в браузере? Вместо этого проблема заключается в том, что разрыв строки, сам тег отображается в пользовательском интерфейсе

Я попытался поместить модель в Html.Raw(modelItem = > item.Speaking), но она никогда не работает так, как она ожидает строку внутри, и не может преобразовать лямбда-выражение для ввода "string", потому что это не тип делегата

Ниже приведен код и комментарии к тем, что я пробовал.

<div>
  @{          
     string strTest = "<br/>Line 1 <br/> Line 2<br>";
     @Html.Raw(strTest); //This works and display as expected
     @MvcHtmlString.Create(strTest); //This works and display as expected       

     @Html.Raw(Html.DisplayFor(modelItem => item.Speaking)); //This doesn't work, its show the <br />  on the screen     
     @MvcHtmlString.Create(Html.DisplayFor(modelItem => item.Speaking).ToString());   //This doent work, its show the <br />  on the screen  
     @Html.Raw(modelItem => item.Speaking) //This throw error Cannot convert lambda expression to type string                                     
    }

 </div>

Оцените любую помощь или предложения. спасибо заранее!

Ответ 1

Попробуйте следующее:

@(new HtmlString(stringWithMarkup))

и вы также можете создать HTML-помощник!:

@helper RawText(string s) {
    @(new HtmlString(s))
}

Ответ 2

В MVC4

Вместо использования @Html.Raw(modelItem => item.Speaking)

Вы можете использовать @Html.Raw(@Model.Speaking.ToString())

Это работает для меня, и я надеюсь, что эта помощь тоже поможет кому-то еще.

Ответ 3

Вы можете просто пропустить DisplayFor и modelItem =>, поэтому:

@Html.Raw(item.Speaking)