4

我有一个带有特殊字符(度数符号)的数据模型。所以该属性包含以下内容:“48 °f”。但是,当 UI 更新到此数据时,我看到的是“ °”,而不是度数符号。我也尝试过“ °”,但这也不起作用。

如何在数据模型中放置特殊字符并让它们出现在 UI 上?

4

2 回答 2

9

您应该html为此使用绑定:

<span data-bind="html: test"></span>

var vm = {
    test: ko.observable("48 &deg; f")
};

ko.applyBindings(vm);

这是一个工作小提琴:http: //jsfiddle.net/svu82/

在 KO 文档中阅读更多内容:http: //knockoutjs.com/documentation/html-binding.html

于 2013-05-21T16:52:33.827 回答
0

我不认为保存在数据库中编码的数据是一个好主意。

使用 ASPNET/MVC C#(带有 Razor)将数据库中的信息绑定到文本区域的值。我正在使用 c# 并且在设置 observable 时必须在服务器端执行类似的操作。

替换字符的示例,以便值绑定正常工作。

model.Description  = ko.observable(
   @html.Raw(
             Model.Description.Replace("\"", "\\\"")
                .Replace("'", "\\\'")
                .Replace(Environment.NewLine, "\\r\\n")
            )
);

扩展方法使绑定更好。

    public static IHtmlString HtmlEscape(this String str)
    {
        if (String.IsNullOrEmpty(str))
            return new HtmlString("");
        var html = ((System.Web.Mvc.WebViewPage)
                       WebPageContext.Current.Page).Html;

        return html.Raw(
             str.Replace("\"", "\\\"")
                .Replace("'", "\\\'")
                .Replace(Environment.NewLine, "\\r\\n"));
    }

和绑定

Description: ko.observable("@(Model.Description.HtmlEscape())");

这对我有用。

于 2014-03-10T04:39:11.393 回答