我正在努力在MVC视图中使用JavaScript中的变量。我有用于处理View Model对象并使用linq查询提取计数的代码,但为了做到这一点,我必须在JavaScript中使用@foreach
循环。然后,我需要使用外部循环的结果来制作图形。
这是我的循环:
function getCount()
{
var counta = 0;
@foreach (var item in Model.AccountList)
{
var listCount = @Model.List.Where(s => s.Id == 1).Count();
counta += listCount;
}
};
我想知道如何在foreach循环中使用counta
变量或声明在循环内访问的静态变量,当离开循环时保持它的值。
答案 0 :(得分:2)
你因为混合了JS和ASP.NET变量而感到困惑
foreach
中的代码始终被解释为为C#代码
function getCount() // JS function
{
var counta = 0; // JS variable
@foreach (var item in Model.AccountList) // C# loop
{
var listCount = @Model.List.Where(s=> s.Id ==1).Count(); // C# variable
// here, you are trying to add C# integer to JavaScript variable. it is impossible
counta += listCount;
}
}
如何解决此问题:计算服务器端并在JavaScript中输出:
@{ // It's all C# code
var count = 0;
foreach (var item in Model.AccountList)
{
var listCount = Model.List.Where(s=> s.Id == 1).Count();
count += listCount;
}
}
<script>
var counta = @(count); // JS counta variable is equal to C# calculated "count"
console.log(counta);
</script>
它将成为:
<script>
var counta = 17; // for example
console.log(counta);
</script>
对于每个生成的页面,它将是一个常量。