Razor code la chaîne par défaut. Existe-t-il une syntaxe spéciale pour rendre sans codage?
Depuis ASP.NET MVC 3, vous pouvez utiliser:
@Html.Raw(myString)
@(new HtmlString(myString))
De même que l'approche @ Html.Raw (chaîne) déjà mentionnée, si vous éditez un MvcHtmlString, il ne sera pas codé. Cela peut être utile lors de l'ajout de vos propres extensions à HtmlHelper ou lors du renvoi d'une valeur de votre modèle de vue pouvant contenir du code HTML.
Par exemple, si votre modèle de vue était:
public class SampleViewModel
{
public string SampleString { get; set; }
public MvcHtmlString SampleHtmlString { get; set; }
}
Pour Core 1.0+ (et MVC 5+), utilisez HtmlString
public class SampleViewModel
{
public string SampleString { get; set; }
public HtmlString SampleHtmlString { get; set; }
}
ensuite
<!-- 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>
Utilisez @Html.Raw()
avec prudence, car vous risqueriez de causer davantage de problèmes d’encodage et de sécurité. Je comprends le cas d'utilisation car je devais le faire moi-même, mais avec précaution ... Évitez simplement de laisser passer tout le texte. Par exemple, conservez/convertissez uniquement des séquences de caractères spécifiques et encodez toujours le reste:
@Html.Raw(Html.Encode(myString).Replace("\n", "<br/>"))
Vous avez alors la certitude que vous n’avez pas créé de brèche de sécurité et que tous les caractères spéciaux/étrangers sont correctement affichés dans tous les navigateurs.
Dans le cas d'ActionLink, il utilise généralement HttpUtility.Encode sur le texte du lien. Dans ce cas, vous pouvez utiliser HttpUtility.HtmlDecode(myString)
cela a fonctionné pour moi lorsque j'utilise HtmlActionLink pour décoder la chaîne que je voulais transmettre. par exemple:
@Html.ActionLink(HttpUtility.HtmlDecode("myString","ActionName",..)
Vous pouvez également utiliser la méthode WriteLiteral
HTML RAW:
@Html.Raw(yourString)