Ответ 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)
Каков наилучший способ передать блок 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. Спасибо.
В действии вашего контроллера:
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)
Вы можете назначить 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>
Лучшим подходом будет создание частичного представления и добавление 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>
контроллер
ViewBag.HTMLData = HttpUtility.HtmlEncode(htmlString);
Вид
@HttpUtility.HtmlEncode(ViewBag.HTMLData)
Вы можете использовать ViewBag.YourField
или ViewData["YourStringName"]
и для его возврата в свой вид. Просто поместите его туда, где вам нужно, чтобы @
обозначался как @ViewBag.YourField
или @ViewData["YourStringName"]
.