J'ai un modèle déposé qui retourne une chaîne HTML avec une balise BR, mais comment afficher ce code HTML sur le navigateur? Le problème ins au lieu de mettre le saut de ligne, la balise elle-même affichant sur l'interface utilisateur
J'ai essayé de mettre le modèle dans Html.Raw (modelItem => item.Speaking), mais cela ne fonctionne jamais car il attend une chaîne à l'intérieur et ne peut pas convertir l'expression lambda en type 'chaîne' car ce n'est pas un type de délégué
Ci-dessous, le code et les commentaires de ce que j'ai essayé.
<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>
Appréciez toute aide ou suggestion. Merci d'avance!
Essaye ça :
@(new HtmlString(stringWithMarkup))
et vous pouvez aussi créer un assistant HTML !:
@helper RawText(string s) {
@(new HtmlString(s))
}
Dans MVC4
Au lieu d'utiliser @Html.Raw(modelItem => item.Speaking)
Vous pouvez utiliser @Html.Raw(@Model.Speaking.ToString())
Cela fonctionne pour moi et j'espère que cela aidera quelqu'un d'autre aussi
Vous pouvez simplement omettre les deux DisplayFor et modelItem => , donc:
@Html.Raw(item.Speaking)