javascript中有3个级别的引号

Bat*_*rog 0 javascript asp.net-mvc jquery razor

在我的MVC应用程序中,我有一个javscript,它在表中附加一行.该行使用javascript(jquery)进行调整.添加的字符串也包含一些mvc特定代码.我无法获得报价和逃避正确.我尝试了几种不同的组合,这就是我所拥有的:

var row = $("<tr><td><input type='hidden' name='LocationArray' value='"
 + CellValue + "'>" + CellText +
 "</td><td class='delete' >" +
 "<img src='@Url.Content(\"~/Content/images/delete_x.png\")' /></td></tr>");
Run Code Online (Sandbox Code Playgroud)

McG*_*gle 6

我认为你不想逃避Razor字符串:

@Url.Content("~/Content/images/delete_x.png")
Run Code Online (Sandbox Code Playgroud)

请记住,首先解析Razor语法.这使得更清楚的是:

@{ var url = Url.Content("~/Content/images/delete_x.png"); }

var row = $("<tr><td><input type='hidden' name='LocationArray' value='"
    + CellValue + "'>" + CellText +
    "</td><td class='delete' >" +
    "<img src='@url' /></td></tr>");
Run Code Online (Sandbox Code Playgroud)

脚注:一旦你进入这个级别的动态HTML构建,可能是时候考虑一​​个客户端模板库(Underscore,Mustache,$ .tmpl等).使用下划线:

<script type='text/template' id='the-template'>
    <tr>
        <td>
            <input type='hidden' name='LocationArray' value='<%= val %>' />
            <%= text %>
        </td>
        <td class='delete' >
           <img src='@Url.Content("~/Content/images/delete_x.png");' />
        </td>
   </tr>
</script>

<script>
    var tmpl = _.template($("#the-template").html());
    var data = { val: "hello", text: "world" };
    var html = tmpl(data);
    $("#target").html(html);
</script>
Run Code Online (Sandbox Code Playgroud)