我对嵌套引号有疑问。
<td style="width: 7%;padding-left:30px"><span class="btn btn-succes mainButton" data-toggle="modal" onclick="showStudents(@ViewBag.Acts[i].ActId, '@ViewBag.Acts[i].ActName','@ViewBag.Acts[i].Filter')" style="float: left; background: bisque"><i class="fa fa-sitemap"> Classes</i></span></td>
上面我有一个代码,它打开一个模态。但它不起作用。因为@ ViewBag.Acts [i] .ActName包含分隔符号。所以
参数列表之后的发生错误。Uncaught SyntaxError:missing)
答案 0 :(得分:2)
我认为您可能正在谈论的是变量本身的值包含引号。例如,如果ViewBag.Acts[i].ActName
的值为Foo's
,那么一旦Razer完成渲染视图,您就会有类似的内容:
onclick="showStudents(1, 'Foo's', ...
显然,这是一个语法错误。在这种情况下你唯一可以做的就是逃避引号:
onclick="showStudents(@ViewBag.Acts[i].ActId, '@ViewBag.Acts[i].ActName.Replace("'", "\\'")', ...
哪会导致:
onclick="showStudents(1, 'Foo\'s', ...
你应该没事。您可能还需要对双引号执行相同操作,因此您不必弄乱onclick
属性。你只需要记住,所有Razor正在做的只是在其他HTML,JavaScript等等中转储变量的值,所以你必须考虑那些看起来像直接HTML的东西。
答案 1 :(得分:0)
您忘记了showStudents
的第一个参数的单引号:
...onclick="showStudents('@ViewBag.Acts[i].ActId'...