如何将razor计数器传递到onkeyup javascript函数中

如何将razor计数器传递到onkeyup javascript函数中,javascript,razor,model-view-controller,Javascript,Razor,Model View Controller,我在.cshtml页面上有类似的视图: @{ var counter = 0; } @foreach (var item in Model){ @Html.TextBox("name_" + @counter, item.name, new { @class = "form-control", @onkeyup = "myFuncWithRazorCounter('My Counter: '

我在.cshtml页面上有类似的视图:

@{ var counter = 0; } 
@foreach (var item in Model){    
     @Html.TextBox("name_" + @counter, item.name, 
          new { 
               @class = "form-control", 
               @onkeyup = "myFuncWithRazorCounter('My Counter: ' + @counter)" 
          })
     { counter = counter + 1; }
}    

@section scripts
{
     <script type="text/javascript">
          function myFuncWithRazorCounter(counter){ 
               var myCounter = counter; 
               console.log(myCounter);
          }
     </script>
}
@{var counter=0;}
@foreach(模型中的变量项){
@Html.TextBox(“名称”+@counter,item.name,
新{
@class=“表单控制”,
@onkeyup=“myFuncWithRazorCounter('我的计数器:'+@计数器)”
})
{计数器=计数器+1;}
}    
@节脚本
{
函数myFuncWithRazorCounter(计数器){
var myCounter=计数器;
console.log(myCounter);
}
}
假设我的模型数是10

当我通过在name_8的文本框id中键入从onkeyup事件侦听器调用函数时,计数器如何通过myFuncWithRazorCounter()函数传递到myFuncWithRazorCounter()函数中


我希望在控制台中看到的最终结果是:我的计数器:8

您将在浏览器中得到一个
无效或意外的标记
错误,如果您检查正在生成的html,那么您将看到正在渲染

<input ... onkeyup="myFuncWithRazorCounter('My Counter: ' + @counter)" ... >
注意,
@
不是必需的。然后将脚本修改为

function myFuncWithRazorCounter(counter) { 
   var myCounter = counter; 
   console.log('My Counter: ' + counter);
}

作为旁注,您正在生成与模型无关的
name
属性,并且在提交表单时不会绑定到模型。要了解如何为集合生成表单控件,请参阅。

感谢您为我的问题提供帮助。名称是将文本框标识为一个单独的id。在
@foreach{}
循环中,有用于更新的引导模式。每个循环产生一个新的引导更新模式。计数器用于单独识别。因此,有10个模态,每个模态都有
@Html.TextBox()
@onkeyup=“myFuncWithRazorCounter(counter)”
。如果我们忽略表单的提交方式,当涉及到
@onkeyup=“myFuncWithRazorCounter”(+counter+)”
时,是否可以这样做:
@onkeyup=“myFuncWithRazorCounter”(“我的计数器:”“+counter+”)
?ThksNo(你试过了吗?)。但是为什么你的行为会污染你的标记-这是21世纪-使用并生成集合的
表单
控件,你使用的是
for
循环,而不是
foreach
循环(请参阅解释在旋转它之后,我通过调整使它工作起来。请查看:'@onkeyup=“myFuncWithRazorCounter('My counter:“++@counter+”)“,您不需要前导的
@
function myFuncWithRazorCounter(counter) { 
   var myCounter = counter; 
   console.log('My Counter: ' + counter);
}