我正在尝试自动生成一些javascript,这是我的数据模型中每行的一行,这需要将每行的ID值插入到javascript中。
这是HTML页面上script元素内部的代码:
<script>
$(function () {
@foreach (var item in Model) {
var ID = item.QuestionID;
<text>$('#toggle-off@ID-label').click(function() { $('#Question-Answer-@ID').show(); })</text>
}
});
</script>
输出为:
<script>
$(function () {
$('#toggle-off@ID-label').click(function() { $('#Question-Answer-1').show(); })
$('#toggle-off@ID-label').click(function() { $('#Question-Answer-2').show(); })
$('#toggle-off@ID-label').click(function() { $('#Question-Answer-3').show(); })
...
当我期望它是:
<script>
$(function () {
$('#toggle-off1-label').click(function() { $('#Question-Answer-1').show(); })
$('#toggle-off2-label').click(function() { $('#Question-Answer-2').show(); })
$('#toggle-off3-label').click(function() { $('#Question-Answer-3').show(); })
...
答案 0 :(得分:0)
如果剃须刀引擎在字母数字字符后加@ID
,则它似乎是字符串的一部分。如果在连字符正确起作用之前添加了连字符:#toggle-off-@ID-label
。您可以用括号将ID
括起来以得到预期的输出:
<script>
$(function () {
@foreach (var item in Model) {
var ID = item.QuestionID;
<text>$('#toggle-off@(ID)-label').click(function() { $('#Question-Answer-@ID').show(); })</text>
}
});
</script>
答案 1 :(得分:0)
Razor标记解析器并不是那么聪明,它认为off@ID
是单个令牌,因此它不应替换。
您应该可以解决以下问题:
<script>
$(function () {
@foreach (var item in Model) {
var ID = item.QuestionID;
var toggle = string.format("#toggle-off{0}-label", ID);
<text>$('@toggle').click(function() { $('#Question-Answer-@ID').show(); })</text>
}
});
</script>