嵌套引号mvc

时间:2016-11-07 13:32:42

标签: html asp.net-mvc

我对嵌套引号有疑问。

 <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)

发生错误。

2 个答案:

答案 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'...