javascript - 准备在属性中使用的转义/编码字符

标签 javascript c# angularjs razor kendo-ui

上下文:

我想将标题字段传递给 Angular 属性。标题字段有时会因人们输入的字符而变得疯狂。

我有以下 Csharp 属性:

Model.StoryTitle = "!"£$%^&*()<>;><~andanythingelsethatisweird";

<my-directive-thing story-title="@Model.StoryTitle"></my-directive-thing>

我在一个页面上也有这个,它从 Ajax 调用中提取相同的字段并由 Kendo(该死的遗留框架)填充:

<my-directive-thing story-title="#= storyTitle #"></my-directive-thing>

在我的指令方面,我有以下代码:

var storyTitle = $attrs.storyTitle || "";

问题:

由于有时会出现奇怪字符的问题,我决定在 javascript 端对其进行转义:

<my-directive-thing story-title="#= escape(storyTitle) #"></my-directive-thing>

工作很简单,因为我在指令中加入了一个 unescape:

var storyTitle = unescape($attrs.storyTitle) || "";

然后一切正常。

但是,我不知道 Csharp 的等效项。

问题:

在确保丑陋的字符不会破坏属性的 JavaScript + Csharp 方法中,我是否遗漏了一个技巧?

最佳答案

转义这些字符或将这些字符转换为 HTML 实体。你不应该在你的客户端这样做。您的后端应该提供良好的编码/解码数据。

Model.StoryTitle = HttpUtility.HtmlDecode("!"£$%^&*()<>;><~andanythingelsethatisweird");

> HttpUtility.HtmlDecode()文档

关于javascript - 准备在属性中使用的转义/编码字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49026555/

相关文章:

javascript - AsyncFileUpload 在 AjaxControlToolkit 中有逻辑错误,当组件在不同的选项卡中时,因此不显示

javascript - 使用angular-ui-router的angular js Controller 不起作用?

javascript - 将数据从 Angular 形式传递到 PHP

javascript - 如何解决编写嵌套指令时缺乏 promise 展开的问题

javascript - 在 Ember js 中使用 Promise 对一系列函数进行排序

javascript - Vue.js Element UI 表单验证 - 显示来自后端的错误

c# - 如何使用 OData 在 Dictionary<string, string> 上进行 $filter?

c# - Python 到 C# 代码解释

c# - 检测移动浏览器并重定向到移动网站的更好地方

javascript - 添加时出现未知提供商 AngularJs ".run"