Передача Html String из контроллера для просмотра ASP.Net MVC

Каков наилучший способ передать блок Html String из Controller в View в MVC. Я хочу, чтобы он отображал этот html-блок при загрузке страницы. Спасибо. Это может быть любой Html, например

<table style="width:300px">
<tr>
  <td>Jill</td>
  <td>Smith</td> 
  <td>50</td>
</tr>
<tr>
  <td>Eve</td>
  <td>Jackson</td> 
  <td>94</td>
</tr>
</table>

Я хочу передать это как строку из контроллера в View. где он будет отображаться как html. Спасибо.

Ответы

Ответ 1

В действии вашего контроллера:

ViewBag.HtmlStr = "<table style=\"width:300px\"><tr><td>Jill</td><td>Smith</td> <td>50</td></tr><tr><td>Eve</td><td>Jackson</td><td>94</td></tr></table>";

Ваше мнение:

@Html.Raw(ViewBag.HtmlStr)

Ответ 2

Вы можете назначить html в контроллере ViewBag и получить доступ к ViewBag в представлении, чтобы получить значение, являющееся html

контроллер

ViewBag.YourHTML = htmlString;

Вид

<div> @ViewBag.YourHTML </div>

Лучше не передать html из контроллера, чтобы View скорее передал объект или коллекцию объекта View (строго типизированное представление) и визуализировал html в представлении, поскольку это отвечает за View

Контроллер

public ActionResult YourView()
{
    //YourCode
    return View(entities.yourCollection.ToList());
}

Вид

<table style="width:300px">
    foreach (var yourObject in Model)
    {
       <tr>
             <td>@yourObject.FirstName</td>
             <td>@yourObject.LasttName</td> 
             <td>@yourObject.Amount</td>
       </tr>      
    }

</table>

Ответ 3

Лучшим подходом будет создание частичного представления и добавление html, возвращаемого им в родительском представлении внутри некоторого контейнера div.

В вашем основном представлении сделайте следующее:

<div>

    @{

    Html.RenderAction("youraction","yourcontroller")

     }

</div>

в вашем действии сделайте следующее:

public ActionResult youraction()
{
 return View();
}

и ваш частичный вид:

@{
Layout = null;
}

<table style="width:300px">
<tr>
  <td>Jill</td>
  <td>Smith</td> 
  <td>50</td>
</tr>
<tr>
  <td>Eve</td>
  <td>Jackson</td> 
  <td>94</td>
</tr>
</table>

Ответ 4

контроллер

 ViewBag.HTMLData = HttpUtility.HtmlEncode(htmlString);  

Вид

@HttpUtility.HtmlEncode(ViewBag.HTMLData)

Ответ 5

Вы можете использовать ViewBag.YourField или ViewData["YourStringName"] и для его возврата в свой вид. Просто поместите его туда, где вам нужно, чтобы @ обозначался как @ViewBag.YourField или @ViewData["YourStringName"].