将 Html 字符串从控制器传递到查看 ASP.Net MVC
Posted
技术标签:
【中文标题】将 Html 字符串从控制器传递到查看 ASP.Net MVC【英文标题】:Pass Html String from Controller to View ASP.Net MVC 【发布时间】:2014-05-11 23:18:23 【问题描述】:在 MVC 中,将 html 字符串块从 Controller 传递到 View 的最佳方式是什么。我希望它在页面加载时显示该 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。 谢谢。
【问题讨论】:
ASP.NET MVC Passing Raw HTML from Controller to View 的可能重复项 【参考方案1】:您可以将控制器中的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>
【讨论】:
我应该如何在视图中显示它 是的,检查我的答案。 好答案 Adil,但我真的不喜欢在控制器中创建 html 的做法。这就是视图的用途:) 不,伙计,这只会将 Html 显示为普通字符串。我想将其显示为 Html 这取决于,最好使用强类型视图【参考方案2】:控制器
ViewBag.HTMLData = HttpUtility.HtmlEncode(htmlString);
查看
@HttpUtility.HtmlEncode(ViewBag.HTMLData)
【讨论】:
【参考方案3】:您可以使用ViewBag.YourField
或ViewData["YourStringName"]
并在您的视图中检索它。只需将其放在您想要的位置,前面加上@
,例如@ViewBag.YourField
或@ViewData["YourStringName"]
。
【讨论】:
【参考方案4】:在您的控制器操作中:
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.Raw()
像这样...黑客可以将其用作潜在的故障点...【参考方案5】:
最好的方法是创建一个局部视图并将其返回的 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>
【讨论】:
我即将发布的 html 不是静态的,它完全是动态的。所以我不能创建一个固定的局部视图。 可以在局部视图中创建动态html\以上是关于将 Html 字符串从控制器传递到查看 ASP.Net MVC的主要内容,如果未能解决你的问题,请参考以下文章