我在我要通过一个字符串变量为JavaScript一个MVC视图,但该字符串变量在它(')具有单引号。我试图做这样的事情。

<a onclick="JavaScript:AddressHandler.ProcessAddress('<%= homeAddress %>');" 
                            class="button-link">change</a>

是homeAddress具有单引号,我必须以某种方式解决办法,这样我可以通过它的JavaScript完整的值。

有帮助吗?

解决方案

要逸出的字符串是一个Javascript文字串,则用双反斜杠替换反斜线和字符串分隔符以反斜杠和定界符:

<a onclick="AddressHandler.ProcessAddress('<%= homeAddress.Replace(@"\", @"\\").Replace("'", @"\'") %>');" class="button-link">change</a>

请注意:当你把脚本的URL,而不是作为一个事件处理程序的javascript:协议用于

编辑:结果 如果脚本还包含需要HTML编码字符,应该逃避JavaScript字符串后进行:

<a onclick="<%= Html.Encode("AddressHandler.ProcessAddress('" + homeAddress.Replace(@"\", @"\\").Replace("'", @"\'") +"');") %>" class="button-link">change</a>

所以,如果你不知道什么字符串包含,是你需要先逃避字符串文字安全的,那么HTML编码的代码,以便它可以在HTML标签的属性付诸表决。

其他提示

您可以使用Ajax帮手:Ajax.JavaScriptStringEncode(string strToEncode)

可以写逸出所有单引号(和如果需要的话其它字符)用反斜杠所以它不是由JavaScript误解的方法。

您会想编码是homeAddress为URL。 MVC有一个内置的帮助要做到这一点: UrlHelper.Encode(字符串URL) - 它应该替换%27单引号

我没有时间来测试它,但看HtmlHelper.Encode(字符串s)。它可能处理转义为您服务。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top