Chaîne d'affichage au format html dans asp.net mvc vue
J'ai un contrôleur qui génèrent de la chaîne de caractères contenant des balises html.Maintenant, quand je suis en l'affichant sur les points de vue, elle apparaît comme une simple chaîne de caractères contenant tous les tags.
J'ai essayé d'utiliser le helper Html pour encoder/décoder pour l'afficher correctement, mais ça ne fonctionne pas.
string str= "<a href="/Home/Profile/seeker">seeker</a> has applied to <a href="/Jobs/Details/9">Job</a> floated by you.</br>";
Sur mon point de vue,
@Html.Encode(str)
- Je suppose que
Html.Raw
devrait aider. - Je pense également que vous pouvez utiliser
HtmlStrin
classe, comme dansHtmlString str = new HtmlString("<span>Some HTML here</span>");
Vous devez vous connecter pour publier un commentaire.
Vous êtes près que vous souhaitez utiliser
@Html.Raw(str)
@Html.Encode
prend les cordes et s'assure que tous les caractères spéciaux sont gérés correctement. Ces inclure des caractères comme les espaces.Vous devriez être en utilisant
IHtmlString
à la place:Chaque fois que vous avez les propriétés de modèle ou les variables qui doivent tenir HTML, j'ai l'impression que c'est généralement une meilleure pratique. Tout d'abord, il est un peu plus propre. Par exemple:
Par rapport à:
Aussi, je pense aussi que c'est un peu plus sûr par rapport
@Html.Raw()
, comme le souci de savoir si vos données sont en HTML est conservé dans votre contrôleur. Dans un environnement où vous avez frontal contre le back-end de développeurs, vos développeurs peuvent être plus en phase avec ce que les données peuvent détenir des valeurs HTML, par conséquent, de garder cette préoccupation dans le back-end (contrôleur).De manière générale, j'essaie d'éviter d'utiliser
Html.Raw()
chaque fois que possible.Une autre chose à noter, c'est que je ne suis pas sûr de l'endroit où vous êtes à l'attribution
str
, mais quelques choses qui me préoccupent avec vous sur la mise en œuvre de cette.Tout d'abord, cela doit être fait dans un contrôleur, quelle que soit votre solution (
IHtmlString
ouHtml.Raw
). Vous devriez éviter de la logique comme ce à votre avis, qu'il n'appartient pas vraiment là.En outre, vous devriez être en utilisant votre
ViewModel
pour obtenir les valeurs de votre point de vue (et encore une fois, de préférence en utilisantIHtmlString
que le type de propriété). Voir quelque chose comme@Html.Encode(str)
est un peu au sujet, à moins que vous faisiez cela pour simplifier votre exemple.vous pouvez utiliser
@Html.Raw(str)
Voir MSDN pour plus d'
J'ai eu un problème similaire avec HTML champs de saisie dans MVC. Le web paginé seulement montré le premier mot de la zone.
Exemple: champ de saisie: "The quick brown fox" valeur Affichée: "Le"
La résolution a été de mettre la variable entre guillemets dans l'énoncé de valeur comme suit:
J'ai eu un problème similaire récemment, et google m'a débarqué ici, j'ai donc mis cette réponse ici au cas où d'autres terres, ici aussi, par souci d'exhaustivité.
J'ai remarqué que quand j'avais mal formaté en html, j'ai été réellement avoir toutes mes balises html sont supprimés, avec juste la non-contenu de la balise reste. J'ai particulièrement eu une table avec un manque d'ouverture de la balise table, et puis toutes mes balises html à partir de l'ensemble de la chaîne où arraché complètement.
Donc, si le ci-dessus ne fonctionne pas, et vous êtes toujours vous gratter la tête, puis aussi vous de vérifier html pour être valable.
Je remarque que, même après que je l'ai eu de travail, MVC a été l'ajout d'tbody balises où je n'en avais aucune. Cela me dit qu'il y est de nettoyer passe MVC (5), et que quand il ne peut pas arriver, il supprime toutes les/certaines balises.