如何将razor计数器传递到onkeyup javascript函数中
我在.cshtml页面上有类似的视图:如何将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: '
@{ 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);
}