ASP.NET MVC Razor renderen zonder codering

Razor codeert standaard strings. Is er een speciale syntaxis voor weergave zonder codering?


Antwoord 1, autoriteit 100%

Sinds ASP.NET MVC 3 kunt u het volgende gebruiken:

@Html.Raw(myString)

Antwoord 2, autoriteit 16%

@(new HtmlString(myString))

Antwoord 3, autoriteit 9%

Zoals de reeds genoemde @Html.Raw(string)-benadering, als u een MvcHtmlString uitvoert, wordt deze niet gecodeerd. Dit kan handig zijn bij het toevoegen van uw eigen extensies aan de HtmlHelper, of bij het retourneren van een waarde uit uw weergavemodel waarvan u weet dat deze html kan bevatten.

Als uw weergavemodel bijvoorbeeld was:

public class SampleViewModel
{
  public string SampleString { get; set; }
  public MvcHtmlString SampleHtmlString { get; set; }
}

Gebruik voor Core 1.0+ (en MVC 5+) HtmlString

public class SampleViewModel
{
  public string SampleString { get; set; }
  public HtmlString SampleHtmlString { get; set; }
}

dan

<!-- this will be encoded -->
<div>@Model.SampleString</div>
<!-- this will not be encoded -->
<div>@Html.Raw(Model.SampleString)</div>
<!-- this will not be encoded either -->
<div>@Model.SampleHtmlString</div>

Antwoord 4, autoriteit 3%

Gebruik @Html.Raw()met de nodige voorzichtigheid, aangezien u meer problemen kunt veroorzaken met codering en beveiliging. Ik begrijp de use case omdat ik dit zelf moest doen, maar voorzichtig… Vermijd gewoon alle tekst door te laten. Bewaar/converteer bijvoorbeeld alleen bepaalde tekenreeksen en codeer altijd de rest:

@Html.Raw(Html.Encode(myString).Replace("\n", "<br/>"))

Dan weet je zeker dat je geen potentieel beveiligingslek hebt gemaakt en dat eventuele speciale/buitenlandse tekens correct worden weergegeven in alle browsers.


Antwoord 5

In het geval van ActionLink gebruikt het over het algemeen HttpUtility.Encode op de linktekst.
In dat geval
je kunt gebruiken
HttpUtility.HtmlDecode(myString)
het werkte voor mij bij het gebruik van HtmlActionLink om de string te decoderen die ik wilde doorgeven. bv:

 @Html.ActionLink(HttpUtility.HtmlDecode("myString","ActionName",..)


Antwoord 6

U kunt ook de WriteLiteral-methode gebruiken


Antwoord 7

HTML RAW :

@Html.Raw(yourString)

Antwoord 8

Je hoeft alleen maar ®in je tekenreeks te kopiëren.
Bijvoorbeeld:

@Html.ActionLink("Something ®", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })

Tadaaaa.

Other episodes