在onclick事件中传递参数时转义撇号

Rem*_*rME 9 html parameters asp.net-mvc jquery apostrophe

我将公司名称传递给onclick事件.一些公司名称中包含撇号.我将'.Replace("'","'")'添加到company_name字段.这允许onclick事件触发,但确认消息显示为"Jane&#; s Welding Company".

<a href="#" onclick="return Actionclick('<%= Url.Action("Activate", new {id = item.company_id}) %>', '<%= Html.Encode(item.company1.company_name.Replace("'", "&#39;")) %>');" class="fg-button fg-button-icon-solo ui-state-default ui-corner-all"><span class="ui-icon ui-icon-refresh"></span></a>

<script type="text/javascript">
function Actionclick(url, companyName) 
{
    if (confirm('This action will activate this company\'s primary company ('+companyName+') and all of its other subsidiaries.  Continue?')) 
    {
        location.href = url;
    };
};
Run Code Online (Sandbox Code Playgroud)

编辑 确认消息显示' 在消息而不是'.当我在这里打字时,它取代了' 用'.添加空格以便不会发生.我想知道将它传递给我的onclick事件的最佳方法,并且还可以在消息中正确显示它而不进行多次替换(如果有更好的方法).

Bre*_*ker 13

我看到它有两个选项.

  1. 如果你用参数(")而不是撇号/单引号(')包装参数,那么你根本不需要转义它.HTML编码将负责编码任何引号(如果它们在字符串中)和撇号不会有问题.但是,由于javascript已经用引号括起来,你需要反斜杠来逃避引号.例如:

    onclick="return Actionclick(\"<%= Url.Action("Activate", new {id = item.company_id}) %>\", \"<%= Html.Encode(item.company1.company_name) %>\");"

  2. 反斜杠逃避公司名称,因为它只是需要撇号的最终javascript字符串,而不是HTML.例如:

    onclick="return Actionclick('<%= Url.Action("Activate", new {id = item.company_id}) %>', '<%= Html.Encode(item.company1.company_name.Replace("'", "\\'")) %>');"