EF MVC, RAZOR: Comment décoder les chaînes Codées en HTML d'un PartialView de sortie?
Je suis en utilisant EF4 + MVC 3 avec un Rasoir.
J'ai le texte suivant ActionResult
, ce qui rend une Dictionary<string,string>
dans une vision partielle.
ACTION
public ActionResult combotest()
{
Dictionary<string, string> r = new Dictionary<string, string>();
r.Add("<> ''", "T");
...
return PartialView("_mypartial", r);
}
Maintenant, les caractères spéciaux contenus dans le Model.Key
valeurs sont HTML Codé, alors que j'aimerais les utiliser en tant que texte brut. Par exemple <> ''
est rendu comme <> ''
.
J'ai essayé de les convertir avec WebUtility.HtmlDecode
ou Server.HtmlDecode
sans succès:
VUE PARTIELLE (_mypartial):
<select>
<option value=''></option>
@foreach (KeyValuePair<string,string> value in (Dictionary<string, string>)Model)
{
<option value="@WebUtility.HtmlDecode(value.Key)">@value.Value
</option>
}
</select>
Pourriez-vous m'aider? Je voudrais éviter d'utiliser String.Replace
, si possible.
- Pourriez-vous préciser ce qui s'est passé avec les deux autres approches?
Vous devez vous connecter pour publier un commentaire.
Pour l'affichage de texte en clair vous pouvez utiliser
@Html.Raw(value.key)
Larry,
essayez ceci:
Html.Raw() retourne un HtmlString instance qui s'enroule la chaîne d'origine.
Le moteur de Rasoir sait pas pour échapper à HtmlString cas, donc l'affichage est comme prévu.
Envisager de ne pas utiliser 'string', en premier lieu, mais plutôt
IHtmlString
, par exemple avecHtmlString
.Par exemple:
public ActionResult combotest()
{
Dictionary<IHtmlString, string> r = new Dictionary<IHtmlString, string>();
r.Add(new HtmlString("<> ''"), "T");
...
return PartialView("_mypartial", r);
}
<select>
<option value=''></option>
@foreach (KeyValuePair<IHtmlString,string> value in (Dictionary<IHtmlString, string>)Model) {
<option value="@value.Key">@value.Value
</option>
}
</select>
Maintenant, vous n'avez pas à compter sur un implicite du contrat de sécurité entre le point de vue (à l'aide de Html.Raw) et le contrôleur (fournir un texte qui, je l'espère, coffre-fort). Vous êtes fournissant valide, coffre-fort Html et de le marquer comme tel à partir de la source.