Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CS0103:名称'';在当前上下文(javascript)中不存在_Javascript_Asp.net Mvc_Razor - Fatal编程技术网

CS0103:名称'';在当前上下文(javascript)中不存在

CS0103:名称'';在当前上下文(javascript)中不存在,javascript,asp.net-mvc,razor,Javascript,Asp.net Mvc,Razor,为什么要运行此代码以避免出现以下错误: 我该如何计算foreach中的重复次数 CS0103:名称“c”在当前上下文中不存在 如果(c==5){将未定义的作为DocumentReady回调而不是函数传递,请尝试以下操作: $(文档).ready(myFunction) 函数myFunction(){ var table=document.getElementById(“tbVideos”); var c=5; @foreach(模型中的var项目){ 如果(c==5){ c=0; var行=t

为什么要运行此代码以避免出现以下错误: 我该如何计算foreach中的重复次数

CS0103:名称“c”在当前上下文中不存在

如果(c==5){
未定义的
作为DocumentReady回调而不是函数传递,请尝试以下操作:

$(文档).ready(myFunction)
函数myFunction(){
var table=document.getElementById(“tbVideos”);
var c=5;
@foreach(模型中的var项目){
如果(c==5){
c=0;
var行=table.insertRow(c);
}
var cell1=行插入单元格(c);
call1.innerHTML=Html.DisplayFor(modelItem=>item.ID\u TERCEIRO);
c=c+1;
}
}

如果您正在以DocumentReady回调而不是函数的形式传递
未定义的
,请尝试以下操作:

$(文档).ready(myFunction)
函数myFunction(){
var table=document.getElementById(“tbVideos”);
var c=5;
@foreach(模型中的var项目){
如果(c==5){
c=0;
var行=table.insertRow(c);
}
var cell1=行插入单元格(c);
call1.innerHTML=Html.DisplayFor(modelItem=>item.ID\u TERCEIRO);
c=c+1;
}
}

您正在将JavaScript和Razor混合在一起,为什么不直接呈现表格呢?例如:

@foreach (var item in Model) {
    <tr>
        <td>...</td>
        <td>...</td>
        <td>...</td>
        <td>...</td>
        <td>@Html.DisplayFor(item => item.ID_TERCEIRO)</td>
    </tr>
}
@foreach(模型中的变量项){
...
...
...
...
@DisplayFor(item=>item.ID\u TERCEIRO)
}
所有这些都不需要JavaScript,只需要Razor


@foreach()
中的所有内容都将成为服务器端代码块。引擎希望代码块中包含
c

您将JavaScript和Razor混合在一起,为什么不只是呈现表?例如:

@foreach (var item in Model) {
    <tr>
        <td>...</td>
        <td>...</td>
        <td>...</td>
        <td>...</td>
        <td>@Html.DisplayFor(item => item.ID_TERCEIRO)</td>
    </tr>
}
@foreach(模型中的变量项){
...
...
...
...
@DisplayFor(item=>item.ID\u TERCEIRO)
}
所有这些都不需要JavaScript,只需要Razor


@foreach()中的所有内容
成为服务器端代码块。引擎在代码块中需要
c

产生错误消息的原因是
@foreach
成为带有Razor的服务器端指令。服务器仅解释
@foreach
块的内容,而不是
myFunction
的其余部分。因为其中,当服务器执行
@foreach
逻辑时,服务器上的
c
没有有效的定义

如果改用
Array.forEach
,它将在客户端运行。然后可以根据方法调用向它传递匿名函数,这将关闭
c
的原始定义

正如其他人所说,不要将
myFunction
的返回值传递给
$(文档)。ready
-传递函数本身(参见下面的注释)

最后,谈谈最佳实践。除非您正在编写一些模块化的UI小部件,否则使用
innerHTML
通常是一种反模式。尤其是在堆栈中内置了服务器端模板呈现时。我的意思是,beautifulcoder的建议对于下面的特定示例更为正确。也就是说,您是可能最好使用Razor直接在服务器端呈现HTML。但是,如果您使用Razor更新数据而不刷新页面,而不是在触发
ready
事件时一次性呈现,则客户端呈现不会太过分(不过在这种情况下,最好使用具有适当数据绑定(如knockoutjs)的JS库)


//注意:将函数传递给处理程序,而不是返回函数
$(文档).ready(myFunction)
函数myFunction(){
var table=document.getElementById(“tbVideos”);
var c=5;
Model.forEach(功能(项){
如果(c==5){
c=0;
var行=table.insertRow(c);
}
var cell1=行插入单元格(c);
call1.innerHTML=Html.DisplayFor(modelItem=>item.ID\u TERCEIRO);
c=c+1;
});
}

出现错误消息的原因是
@foreach
成为Razor的服务器端指令。服务器仅解释
@foreach
块的内容,而不是
myFunction
的其余部分。因此,在执行
@f时,服务器上没有对
c
的有效定义oreach
逻辑

如果改用
Array.forEach
,它将在客户端运行。然后可以根据方法调用向它传递匿名函数,这将关闭
c
的原始定义

正如其他人所说,不要将
myFunction
的返回值传递给
$(文档)。ready
-传递函数本身(参见下面的注释)

最后,谈谈最佳实践。除非您正在编写一些模块化的UI小部件,否则使用
innerHTML
通常是一种反模式。尤其是在堆栈中内置了服务器端模板呈现时。我的意思是,beautifulcoder的建议对于下面的特定示例更为正确。也就是说,您是可能最好使用Razor直接在服务器端呈现HTML。但是,如果您使用Razor更新数据而不刷新页面,而不是在触发
ready
事件时一次性呈现,则客户端呈现不会太过分(不过在这种情况下,最好使用具有适当数据绑定(如knockoutjs)的JS库)