【问题标题】:Render html using AngularJS from sql database使用来自 sql 数据库的 AngularJS 渲染 html
【发布时间】:2015-12-08 05:49:35
【问题描述】:

我想在 sql 数据库列中保存带有字符串的链接。我在代码隐藏中创建这样的锚标记

    var sFlag = String.Format(@"<a href=""https://localhost:44300/Resolve?post={0}"">resolve</a>", resolve.PostId);

    message.Content = "Please confirm your post by providing feedback by clicking "+sFlag;

它会正确保存在 sql db 列中

但是当我在 html 中渲染时,它显示为字符串而不是 html

我正在使用 Angular js 从服务器获取数据。

           $http({
                url: '/Message/GetAllMessages',
                method: "GET",

            }).success(function (data, status, headers, config) {
                $scope.message = data;

            }).error(function (data, status, headers, config) {

            });

最后循环彻底的 ng-repeat

 <ul ng-repeat="m in message">
    <li>
 <p style="margin-top:20px;">{{m.Content}}</p>
</li></ul>

【问题讨论】:

  • 你以什么方式在 html 中渲染字符串?
  • 简单地显示就像使用 angular 我这样做了

    {{m.Content}}

  • 您的问题可能在于您的 AngularJS 代码检索和显示数据——您也应该使用该代码更新您的帖子。
  • 它只是一个http get请求

标签: c# html sql-server angularjs


【解决方案1】:

问题有点误导。基本上,您不会在从数据库中检索的视图中呈现 HTML。您需要将$sce 注入您的控制器并对其进行编码,然后再将其发送回视图。

$scope.ContentWithHtml = data;
$scope.Content = $sce.trustAsHtml($scope.ContentWithHtml);

这是Fiddle

更新

由于您使用的是ng-repeat,因此您可以执行以下操作。将此添加到您的控制器(在注入 $sce 之后):

$scope.trustAsHtml = $sce.trustAsHtml;

那么你可以在你的视图中使用如下代码:

<ul ng-repeat="m in message">
    <li>
        <p style="margin-top:20px;" ng-bind-html="trustAsHtml(m.Content)"></p>
    </li>
</ul>

【讨论】:

  • 问题是如何用 Angular js 或 javascript aur jquery 渲染 html 任何东西
  • 这是我的答案解决的问题。您需要编辑变量名称以适合您的代码,但您就是这样做的。将$sce 注入您的控制器,并使用trustAsHtml 方法使该属性能够呈现HTML,而不是将其写为字符串。
  • 所以我必须遍历所有内容,基本上它是一个集合?
  • 更新了我的答案,向您展示如何在 ng-repeat 中实现这一目标
猜你喜欢
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-16
  • 2018-06-25
  • 2020-04-14
  • 1970-01-01
相关资源
最近更新 更多