web-dev-qa-db-fra.com

asp.net mvc3 renvoie le code HTML brut à afficher

Existe-t-il d'autres moyens de retourner du code HTML brut à partir du contrôleur? Par opposition à simplement utiliser viewbag. comme ci-dessous:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewBag.HtmlOutput = "<HTML></HTML>";
        return View();
    }
}

@{
    ViewBag.Title = "Index";
}

@Html.Raw(ViewBag.HtmlOutput)
71
River

Cela n'a pas beaucoup de sens, car View devrait générer du HTML, pas du contrôleur. Quoi qu'il en soit, vous pouvez utiliser méthode Controller.Content , ce qui vous permet de spécifier le résultat html, ainsi que le type de contenu et l'encodage.

public ActionResult Index()
{
    return Content("<html></html>");
}

Ou vous pouvez utiliser l'astuce construite dans le framework asp.net-mvc - rendre la chaîne de retour d'action directement. Il livrera le contenu de la chaîne dans le navigateur de l'utilisateur.

public string Index()
{
    return "<html></html>";
}

En fait, pour tout résultat d'action autre que ActionResult, Framework tente de le sérialiser en chaîne et d'écrire dans la réponse.

138
archil

Créez simplement une propriété dans votre modèle de vue de type MvcHtmlString. Vous n'aurez pas besoin de Html.Raw alors non plus.

8

Essayez de retournez bootstrap, cela a fonctionné pour moi

return Content("<div class='alert alert-success'><a class='close' data-dismiss='alert'>
&times;</a><strong style='width:12px'>Thanks!</strong> updated successfully</div>");

Note: N'oubliez pas d'ajouter bootstrap css et js dans votre page d'affichage

l'espoir aide quelqu'un.

5
stom

Cela a l'air bien, sauf si vous voulez le transmettre en tant que chaîne de modèle

public class HomeController : Controller
{
    public ActionResult Index()
    {
        string model = "<HTML></HTML>";
        return View(model);
    }
}

@model string
@{
    ViewBag.Title = "Index";
}

@Html.Raw(Model)
1
MoXplod