上下文:
我想将标题字段传递给 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");
关于javascript - 准备在属性中使用的转义/编码字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49026555/