Are there other ways I can return raw html from controller? As opposed to just using viewbag. like below:
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.HtmlOutput = "<HTML></HTML>";
return View();
}
}
@{
ViewBag.Title = "Index";
}
@Html.Raw(ViewBag.HtmlOutput)
There's no much point in doing that, because View
should be generating html, not the controller. But anyways, you could use Controller.Content method, which gives you ability to specify result html, also content-type and encoding
public ActionResult Index()
{
return Content("<html></html>");
}
Or you could use the trick built in asp.net-mvc framework - make the action return string directly. It will deliver string contents into users's browser.
public string Index()
{
return "<html></html>";
}
In fact, for any action result other than ActionResult
, framework tries to serialize it into string and write to response.
Simply create a property in your view model of type MvcHtmlString. You won't need to Html.Raw it then either.
Give a try to return bootstrap alert message, this worked for me
return Content("<div class='alert alert-success'><a class='close' data-dismiss='alert'>
×</a><strong style='width:12px'>Thanks!</strong> updated successfully</div>");
Note: Don't forget to add bootstrap css
and js
in your view page
hope helps someone.
That looks fine, unless you want to pass it as Model string
public class HomeController : Controller
{
public ActionResult Index()
{
string model = "<HTML></HTML>";
return View(model);
}
}
@model string
@{
ViewBag.Title = "Index";
}
@Html.Raw(Model)
In controller you can use MvcHtmlString
public class HomeController : Controller
{
public ActionResult Index()
{
string rawHtml = "<HTML></HTML>";
ViewBag.EncodedHtml = MvcHtmlString.Create(rawHtml);
return View();
}
}
In your View you can simply use that dynamic property which you set in your Controller like below
<div>
@ViewBag.EncodedHtml
</div>
Controller
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.show = false;
return View();
}
}
Views
@{
ViewBag.Title = "Index";
}
@if (ViewBag.show == false){
<div >
@*your code*@
</div>
}