Asp.net mvc3 возвращает raw html для просмотра
Есть ли другие способы вернуть исходный html из контроллера? В отличие от использования камеры просмотра. как показано ниже:
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.HtmlOutput = "<HTML></HTML>";
return View();
}
}
@{
ViewBag.Title = "Index";
}
@Html.Raw(ViewBag.HtmlOutput)
Ответы
Ответ 1
Нет никакого смысла в этом, потому что View
должен генерировать html, а не контроллер. Но в любом случае вы можете использовать метод Controller.Content, который дает вам возможность указывать результат html, а также тип содержимого и кодировку
public ActionResult Index()
{
return Content("<html></html>");
}
Или вы можете использовать трюк, встроенный в инфраструктуру asp.net-mvc, - прямое действие строки возврата. Он будет передавать содержимое строки в браузер пользователей.
public string Index()
{
return "<html></html>";
}
Фактически, для любого результата действия, отличного от ActionResult
, среда пытается сериализовать его в строку и записать в ответ.
Ответ 2
Просто создайте свойство в вашей модели модели типа MvcHtmlString. Вам не понадобится Html.Raw это также.
Ответ 3
Попробуйте вернуть сообщение бутстрапа, это сработало для меня
return Content("<div class='alert alert-success'><a class='close' data-dismiss='alert'>
×</a><strong style='width:12px'>Thanks!</strong> updated successfully</div>");
Примечание. Не забудьте добавить bootstrap css
и js
на страницу просмотра
Надежда помогает кому-то.
Ответ 4
Это выглядит отлично, если вы не хотите передавать его как строку модели
public class HomeController : Controller
{
public ActionResult Index()
{
string model = "<HTML></HTML>";
return View(model);
}
}
@model string
@{
ViewBag.Title = "Index";
}
@Html.Raw(Model)
Ответ 5
В контроллере вы можете использовать MvcHtmlString
public class HomeController : Controller
{
public ActionResult Index()
{
string rawHtml = "<HTML></HTML>";
ViewBag.EncodedHtml = MvcHtmlString.Create(rawHtml);
return View();
}
}
В вашем представлении вы можете просто использовать это динамическое свойство, которое вы установили в своем контроллере, например ниже
<div>
@ViewBag.EncodedHtml
</div>
Ответ 6
контроллер
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.show = false;
return View();
}
}
представления
@{
ViewBag.Title = "Index";
}
@if (ViewBag.show == false){
<div >
@*your code*@
</div>
}