Javascript 绑定敲除数据模型中的特殊字符
我有一个带有特殊字符的数据模型(学位符号)。。因此,该属性包含以下内容:“48Javascript 绑定敲除数据模型中的特殊字符,javascript,knockout.js,special-characters,Javascript,Knockout.js,Special Characters,我有一个带有特殊字符的数据模型(学位符号)。。因此,该属性包含以下内容:“48°;f”。但是,当UI更新此数据时,我看到的是“°;”,而不是学位符号。我也尝试过“°;”,但这也不起作用 如何在数据模型中放置特殊字符并将其显示在UI上?您应该为此使用html绑定: <span data-bind="html: test"></span> var vm = { test: ko.observable("48 ° f") }; k
°;
f”。但是,当UI更新此数据时,我看到的是“°;
”,而不是学位符号。我也尝试过“°;
”,但这也不起作用
如何在数据模型中放置特殊字符并将其显示在UI上?您应该为此使用
html
绑定:
<span data-bind="html: test"></span>
var vm = {
test: ko.observable("48 ° f")
};
ko.applyBindings(vm);
var vm={
测试:可观察到的ko(“48°;f”)
};
ko.应用绑定(vm);
这是一把小提琴:
阅读KO文档中的更多内容:我认为保存数据库中编码的数据不是一个好主意。
model.Description = ko.observable(
@html.Raw(
Model.Description.Replace("\"", "\\\"")
.Replace("'", "\\\'")
.Replace(Environment.NewLine, "\\r\\n")
)
);
使用ASPNET/MVC#(带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())");
这对我有用 不过,这有一个更大的问题。将以下内容添加到fiddle中,并尝试将绑定更改为html绑定。然后尝试正确渲染编码字符。祝你好运当使用值绑定时,字符被编码,当使用html时,值在更改时不会更新。此外,当值绑定与某些字符(例如引号和换行符)一起使用时,值绑定会破坏html代码。该字符串不会在数据库中编码。它通过JSONP请求传输到客户机,因此必须在传输之前在服务器上对其进行编码。当html绑定一步完成时,我不需要添加额外的函数来删除编码。