0

在我的 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>");
4

2 回答 2

6

我认为您不想转义 Razor 字符串:

@Url.Content("~/Content/images/delete_x.png")

请记住,首先解析 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>");

脚注:一旦你达到了这种动态 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>
于 2012-11-28T23:38:06.797 回答
0

这就是为什么您应该使用 jquery 构建元素的原因。

var el = $("<tr>")
  .append($("<td>")
    .append($("<input>")
    .attr({type: "hidden", name: "LocationArray"})
    .val(CellValue)
    .text(CellText)
  )
)

等等等等。你想要完成的工作更加清晰,你将能够捕捉错误并使更改变得更加容易。

于 2012-11-28T23:45:03.240 回答