Displaying HTML String from Model in MVC Razor View

30,454

Solution 1

Try this :

@(new HtmlString(stringWithMarkup))

and you can create a HTML helper too!:

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

Solution 2

In MVC4

Instead of using @Html.Raw(modelItem => item.Speaking)

You can use @Html.Raw(@Model.Speaking.ToString())

It works for me and I hope this help someone else too

Solution 3

You can just omit both DisplayFor and modelItem =>, so:

@Html.Raw(item.Speaking)

Solution 4

MVC 5

@Html.Raw(WebUtility.HtmlDecode(item.Speaking))
Share:
30,454
Srééjîth Náîr
Author by

Srééjîth Náîr

.Net full stack developer. Currently working with Angular 6 Extensively worked with Telerik(Progress) Kendo UI

Updated on July 16, 2022

Comments

  • Srééjîth Náîr
    Srééjîth Náîr almost 2 years

    I have a Model filed that returns an HTML string with line break BR tag, but How do I display that HTML on the browser ? The problem ins instead putting the line break, the Tag itself displaying on the UI

    I tried to put the model within Html.Raw(modelItem => item.Speaking), but it never works as it expecting a string inside, and Cannot convert lambda expression to type 'string' because it is not a delegate type

    Below is the code and comments what I've tried.

    <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>
    

    Appreciate any help or suggestions. thanks in advance!

  • Srééjîth Náîr
    Srééjîth Náîr over 9 years
    Thanks Qualid for the response, but that didn't work. I want to know the way to pass the model value as a input to the HtmlString. @(new HtmlString(Html.DisplayFor(modelItem => item.Speaking).ToString())) This gives me the string with markup.
  • Srééjîth Náîr
    Srééjîth Náîr over 9 years
    i just had to use :) Thanks people who took a look at the query! @Html.Raw(item.Speaking) I got the answer from, forums.asp.net/p/2004322/…
  • VincentZHANG
    VincentZHANG over 7 years
    It works with MVC 5, in case you just display the HTML content in a view.
  • Haim Katz
    Haim Katz over 5 years
    This is an old post but the above didn't work for me, but this did: @HTML.Raw(item.Speaking.ToString()