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'>
&times;</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>
      }