在我的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>");
答案 0 :(得分: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等)。使用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>
答案 1 :(得分:0)
这就是你应该使用jquery构建元素的原因。
var el = $("<tr>")
.append($("<td>")
.append($("<input>")
.attr({type: "hidden", name: "LocationArray"})
.val(CellValue)
.text(CellText)
)
)
等等。对于你想要完成的事情来说,它更加清晰,你将能够更容易地发现错误并进行更改。