【问题标题】:Pass Html String from Controller to View ASP.Net MVC将 Html 字符串从控制器传递到查看 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。 谢谢

【问题讨论】:

标签: c# html asp.net asp.net-mvc asp.net-mvc-4


【解决方案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\
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-30
      • 2012-08-15
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多