我有一个带有特殊字符的数据模型(度数符号)..所以该属性包含以下内容:“48 °
f”。但是,当UI更新此数据时,我会看到“°
”,而不是度数符号。我也试过“°
”,但这也不起作用。
如何在数据模型中添加特殊字符并将其显示在UI上?
答案 0 :(得分:8)
您应该使用html
绑定:
<span data-bind="html: test"></span>
var vm = {
test: ko.observable("48 ° f")
};
ko.applyBindings(vm);
这是一个工作小提琴:http://jsfiddle.net/svu82/
在KO文档中阅读更多内容:http://knockoutjs.com/documentation/html-binding.html
答案 1 :(得分: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())");
这对我有用。