哪种方法是将Html String块从Controller传递到MVC中的View。我希望它在页面加载时显示html块。谢谢。它可以是任何Html, e.g
<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。 谢谢。
答案 0 :(得分:44)
在您的控制器操作中:
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)
答案 1 :(得分:6)
您可以将控制器中的html指定给ViewBag并访问View中的ViewBag以获取html的值
控制器的
ViewBag.YourHTML = htmlString;
视图的
<div> @ViewBag.YourHTML </div>
最好不将html从控制器传递到View ,而是将对象或对象集合传递给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>
答案 2 :(得分:2)
最好的方法是创建一个局部视图,并将它返回的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>
答案 3 :(得分:1)
控制器
ViewBag.HTMLData = HttpUtility.HtmlEncode(htmlString);
查看
@HttpUtility.HtmlEncode(ViewBag.HTMLData)
答案 4 :(得分:1)
您可以使用ViewBag.YourField
或ViewData["YourStringName"]
并在视图中进行检索。只需将@
或@ViewBag.YourField
@ViewData["YourStringName"]
放在{{1}}前面。