【问题标题】:Is it possible to use a Javascript variable within C# code inside HTML?是否可以在 HTML 中的 C# 代码中使用 Javascript 变量?
【发布时间】:2012-10-22 09:44:41
【问题描述】:

我有一个要迭代的集合,它保存在 C# 变量中。

我想在 Javascript 中使用 for 循环对其进行迭代;这可能吗?

例如:

@{ int questionCount = 0;
foreach(var q in Model.Questions){ 
questionCount++;
}

...做一些 HTML...

<script type="text/javascript">
jQuery(function () {


for (var i=1;i<=@questionCount;i++)
{        

    var d1 = @Model.Questions[i].Answers.Where(m => m.Answer == 1).Count(); 
    <-- this is where it breaks -->
}

});

我得到的错误是索引超出范围。我想这意味着一旦我将@符号放入该行,它就无法理解“i”。如何正确分隔字符串以使用变量 i(来自 Javascript)来迭代我的 C# 集合?

【问题讨论】:

    标签: c# javascript arrays


    【解决方案1】:

    这不起作用。您不能在服务器端代码块中访问客户端变量。

    【讨论】:

    • 如我所想,感谢您的确认。因为我可以要求类似 var d1 = @Model.Questions[0].Answers.Where(m => m.Answer == 1).Count(); (即将索引设置为零),并且由于我知道该索引的值(从循环内),有没有办法动态地构造这一行?
    • 您可以创建一些代码在服务器上运行,以字符串形式生成 JavaScript(即,随后将在客户端上运行的代码),然后将该字符串输出到您的 .CSHTML 中。
    • 这听起来很有希望。我对这个东西有点新手,会是生成 Javascript 的 C# 代码吗?
    • 是的,C# 生成包含 JavaScript 的字符串。然后,您在 HTML 中输出该字符串,例如通过显示属性 @Model.GeneratedCode 或您希望调用的任何名称。
    • 谢谢罗伊,我试试看 :-)
    【解决方案2】:

    您不能在 javascript 中使用服务器端模型,这些模型仅与服务器端相关,用于生成 HTML

    如果您确实需要在 javascript 代码中添加值,那么您可以将模型的值放入某个隐藏的 html 元素中。

    【讨论】:

    • 谢谢@Asif;你能详细说明你的第二句话吗?另外,因为我可以要求类似 var d1 = @Model.Questions[0].Answers.Where(m => m.Answer == 1).Count(); (即将索引设置为零),并且由于我知道该索引的值(从循环内),有没有办法动态地构造这一行?
    猜你喜欢
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2017-09-03
    • 2014-10-16
    • 1970-01-01
    • 2011-11-23
    相关资源
    最近更新 更多