Javascript 为什么@ID变量在同一个<;文本></文本>;要素

Javascript 为什么@ID变量在同一个<;文本></文本>;要素,javascript,c#,asp.net-mvc-4,razor,Javascript,C#,Asp.net Mvc 4,Razor,我试图自动生成一些javascript,即数据模型中每一行的一行,这需要将每一行上的ID值插入到javascript中 这是HTML页面上脚本元素内的代码: <script> $(function () { @foreach (var item in Model) { var ID = item.QuestionID; <text>$('#toggle-off@ID-label').click(function() { $('#Qu

我试图自动生成一些javascript,即数据模型中每一行的一行,这需要将每一行上的ID值插入到javascript中

这是HTML页面上脚本元素内的代码:

    <script>
        $(function () {
@foreach (var item in Model) {
    var ID = item.QuestionID;
    <text>$('#toggle-off@ID-label').click(function() { $('#Question-Answer-@ID').show(); })</text>
}
        });
    </script>

$(函数(){
@foreach(模型中的var项目){
变量ID=item.QuestionID;
$('#切换-off@ID-标签)。单击(函数(){$('#问题答案-@ID')。显示();})
}
});
输出为:

    <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(); })
...

$(函数(){
$('#切换-off@ID-标签)。单击(函数(){$('#问答-1')。显示();})
$('#切换-off@ID-标签)。单击(函数(){$('#问答-2')。显示();})
$('#切换-off@ID-标签)。单击(函数(){$('#问答-3')。显示();})
...
我本以为会是:

    <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(); })
...

$(函数(){
$('toggle-off1-label')。单击(函数(){$('toggle-Answer-1')。显示()
$('toggle-off2-label')。单击(函数(){$('toggle-Answer-2')。显示()
$('toggle-off3-label')。单击(函数(){$('toggle-Answer-3')。显示()
...

如果前面有字母数字字符,razor引擎似乎会将
@ID
视为字符串的一部分。如果在它正常工作之前添加连字符:
#关闭-@ID标签
。可以用括号括住
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>

$(函数(){
@foreach(模型中的var项目){
变量ID=item.QuestionID;
$('#关闭@(ID)-label')。单击(函数(){$('#问题答案-@ID')。显示();})
}
});

如果前面有字母数字字符,razor引擎似乎会将
@ID
视为字符串的一部分。如果在它正常工作之前添加连字符:
#关闭-@ID标签
。可以用括号括住
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>

$(函数(){
@foreach(模型中的var项目){
变量ID=item.QuestionID;
$('#关闭@(ID)-label')。单击(函数(){$('#问题答案-@ID')。显示();})
}
});

Razor标记解析器没有那么聪明,它考虑了
off@ID
是一个单一的令牌,因此不应该被它取代

你应该可以用这样的方法来解决这个问题:


$(函数(){
@foreach(模型中的var项目){
变量ID=item.QuestionID;
var toggle=string.format(“#toggle off{0}-label”,ID);
$('@toggle')。单击(函数(){$('#问题答案-@ID')。显示();})
}
});

Razor标记解析器没有那么聪明,它考虑了
off@ID
是一个单一的令牌,因此不应该被它取代

你应该可以用这样的方法来解决这个问题:


$(函数(){
@foreach(模型中的var项目){
变量ID=item.QuestionID;
var toggle=string.format(“#toggle off{0}-label”,ID);
$('@toggle')。单击(函数(){$('#问题答案-@ID')。显示();})
}
});

为什么需要生成单独的
单击
处理程序?为什么需要生成单独的
单击
处理程序?