Gibt es andere Möglichkeiten, wie ich unformatiertes HTML vom Controller zurückgeben kann? Im Gegensatz zur Verwendung von Viewbag. Wie unten:
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.HtmlOutput = "<HTML></HTML>";
return View();
}
}
@{
ViewBag.Title = "Index";
}
@Html.Raw(ViewBag.HtmlOutput)
asp.net-mvc-3
controller
return
Fluss
quelle
quelle
Antworten:
Das macht nicht viel Sinn, denn es
View
sollte HTML generiert werden, nicht der Controller. Sie können jedoch die Controller.Content-Methode verwenden , mit der Sie das Ergebnis-HTML sowie den Inhaltstyp und die Codierung angeben könnenpublic ActionResult Index() { return Content("<html></html>"); }
Oder Sie können den im asp.net-mvc-Framework integrierten Trick verwenden - lassen Sie die Aktion direkt zurückgeben. Es liefert String-Inhalte in den Browser des Benutzers.
public string Index() { return "<html></html>"; }
Tatsächlich
ActionResult
versucht das Framework für jedes andere Aktionsergebnis als , es in eine Zeichenfolge zu serialisieren und in die Antwort zu schreiben.quelle
PartialViewResult
?return Content("<html></html>", "text/html");
Erstellen Sie einfach eine Eigenschaft in Ihrem Ansichtsmodell vom Typ MvcHtmlString. Sie müssen es dann auch nicht Html.Raw.
quelle
Versuchen Sie, die Bootstrap-Warnmeldung zurückzugeben . Dies hat bei mir funktioniert
return Content("<div class='alert alert-success'><a class='close' data-dismiss='alert'> ×</a><strong style='width:12px'>Thanks!</strong> updated successfully</div>");
Hinweis: Vergessen Sie nicht, Bootstrap
css
undjs
auf Ihrer Ansichtsseite hinzuzufügenHoffnung hilft jemandem.
quelle
Das sieht gut aus, es sei denn, Sie möchten es als Modellzeichenfolge übergeben
public class HomeController : Controller { public ActionResult Index() { string model = "<HTML></HTML>"; return View(model); } } @model string @{ ViewBag.Title = "Index"; } @Html.Raw(Model)
quelle
Was für mich (ASP.NET Core) funktionierte, war, den Rückgabetyp
ContentResult
festzulegen, dann die HMTL darin zu verpacken und den ContentType auf zu setzen"text/html; charset=UTF-8"
. Dies ist wichtig, da es sonst nicht als HTML interpretiert wird und die HTML-Sprache als Text angezeigt wird.Hier ist das Beispiel einer Controller-Klasse:
/// <summary> /// Startup message displayed in browser. /// </summary> /// <returns>HTML result</returns> [HttpGet] public ContentResult Get() { var result = Content("<html><title>DEMO</title><head><h2>Demo started successfully." + "<br/>Use <b><a href=\"http://localhost:5000/swagger\">Swagger</a></b>" + " to view API.</h2></head><body/></html>"); result.ContentType = "text/html; charset=UTF-8"; return result; }
quelle
public ActionResult Questionnaire() { return Redirect("~/MedicalHistory.html"); }
quelle
In Controller können Sie verwenden
MvcHtmlString
public class HomeController : Controller { public ActionResult Index() { string rawHtml = "<HTML></HTML>"; ViewBag.EncodedHtml = MvcHtmlString.Create(rawHtml); return View(); } }
In Ihrer Ansicht können Sie einfach die dynamische Eigenschaft verwenden, die Sie wie unten in Ihrem Controller festgelegt haben
quelle