在我的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>");发布于 2012-11-29 07:38:07
我不认为你想转义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>");脚注:一旦你达到了这个级别的动态超文本标记语言构造,可能是时候考虑一个客户端模板库(下划线,Mustache,$.tmpl,等等)。使用Underscore
<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-29 07:45:03
这就是为什么你应该用jquery构建你的元素。
var el = $("<tr>")
.append($("<td>")
.append($("<input>")
.attr({type: "hidden", name: "LocationArray"})
.val(CellValue)
.text(CellText)
)
)等等。您将更清楚地了解您要实现的目标,并且您将能够捕获错误并更容易地进行更改。
https://stackoverflow.com/questions/13616350
复制相似问题