public string GetEscapedTitle() { return Title.Replace("'", "\\'").Replace("\"", "\\\""); }
我创建了上述内容来处理在视图中执行此操作时遇到的问题:
<a onclick="AddToMyList('@Model.Title', ...
这似乎解决了当Title包含单引号或双引号时我遇到的错误。但这不是我遇到问题的唯一属性,所以我有这个好主意创建一个类似的扩展方法:
public static string EscapeQuotes(this string s)
{
return s.Replace("'", "\'").Replace("\"", "\\\"");
}
不幸的是,这让我回到原点,我在使用它时遇到了同样的错误。那么差异是什么?
我唯一可以想到的是,也许使用GetEscapedTitle()方法razor在它被转义后对其进行编码但是可能使用扩展方法它仍然以某种方式在扩展方法运行之前被编码?这对我来说没有意义,但我现在能想到的就是为什么它不起作用。 :(
编辑:仅供参考我还尝试直接在剃刀代码中添加.Replace()调用,效果非常好。但是出于一些奇怪的原因,如果我在扩展方法中这样做,它就不会工作。