将 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.YourFieldViewData["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的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从控制器传递到 laravel 中查看?

如何将模型值从视图传递到控制器?

如何通过ajax jquery将列表字符串从视图传递到控制器

从控制器传递字符串值

将数据从控制器传递到 HTML 模板

如何将字符串从根视图控制器传递到另一个视图?