我有一个带有特殊字符(度数符号)的数据模型。所以该属性包含以下内容:“48 °
f”。但是,当 UI 更新到此数据时,我看到的是“ °
”,而不是度数符号。我也尝试过“ °
”,但这也不起作用。
如何在数据模型中放置特殊字符并让它们出现在 UI 上?
我有一个带有特殊字符(度数符号)的数据模型。所以该属性包含以下内容:“48 °
f”。但是,当 UI 更新到此数据时,我看到的是“ °
”,而不是度数符号。我也尝试过“ °
”,但这也不起作用。
如何在数据模型中放置特殊字符并让它们出现在 UI 上?
您应该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
我不认为保存在数据库中编码的数据是一个好主意。
使用 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())");
这对我有用。