J'ai un modèle de commentaire avec propriété de chaîne comme ceci:Comment stocker le code HTML dans ASP.NET MVC2 Modèle
[Column]
public string Text { get; set; }
texte Commentaire peut avoir toutes les balises HTML à l'intérieur (je sais qu'il est mauvais, mais je dois). Mais quand je mets à jour l'objet, MVC 2 échappe tous les balises HTML.
méthode de mise à jour est:
[HttpPost]
public ActionResult Edit(int ID=0)
{
Comment comment= ID == 0
? new Comment()
: commentRepository.Comments.First(x => x.ID == ID);
TryUpdateModel(comment);
if (ModelState.IsValid)
{
commentRepository.Save(comment);
return RedirectToAction("View/" + comment.ID);
}
else
{
return View(comment);
}
}
Comment puis-je mettre à jour le texte de commentaire sans échapper?
P.S. J'ai aussi problème avec le type de colonne: lorsque je passe la colonne Texte dans SQL Server Express de varchar-texte, modèle de mise à jour échoue:
Le texte des types de données et nvarchar sont incompatibles dans l'opérateur Egal à.
Détails d'exception: System.Data.SqlClient.SqlException: Les types de données text et nvarchar sont incompatibles dans l'opérateur égal à.
Merci, cela fonctionne maintenant, mais il n'y a pas de propriété Ne comptez pas dans ValidationInputAttribute, donc j'ai besoin pour me valider. Mais c'est bon :) – Shart
D'ailleurs, j'ai trouvé que mon ckeditor renvoyait du code html échappé, donc dans l'action du contrôleur j'ai déjà échappé html. Pour avoir du HTML brut, je devrais mettre 'htmlEncodeOutput = false' dans la configuration de ckeditor. Mais j'ai dû désactiver la validation aussi. – Shart
1) C'est probablement nouveau dans MVC3. 2) Vous pouvez essayer le Server.HtmlDecode (html) ;. – gligoran