【问题标题】:How to use a foreach loop with an ILIST<models> in javascript?如何在 javascript 中使用带有 ILIST<models> 的 foreach 循环?
【发布时间】:2014-12-10 17:21:27
【问题描述】:

您好,我在 MVC 3 应用程序中有一个使用 @model IList&lt;TrackerModel&gt; 的剃刀视图

IList&lt;TrackerModel&gt; 正在从我的控制器中的操作方法传递给视图。 顾名思义,它是TrackerModels 的列表。

我想将此列表传递给视图底部的 javascript 块。

通过 foreach 循环运行列表,以便每个模型都使用特定的函数。 例如。

foreach(var mod in IList<TrackerModel>)
{
     LoadAttachments();
}

(我知道上面是错误的,但你明白了) 这个可以吗?

   @foreach(var mod in Model)
{
    LoadAttachments(@Newtonsoft.Json.JsonConvert.SerializeObject(mod));
}

尝试了上面的建议,得到了以下错误。 @foreach = 条件编译已关闭?

var = 预期的表达式?

在 = 预期; ?

LoadAttachments = 当前上下文中不存在名称“LoadAttachments”?

@Newtonsoft = 条件编译已关闭?

【问题讨论】:

    标签: javascript c# .net asp.net-mvc-3 razor


    【解决方案1】:

    如果您想采用这种方法(而不是让您的 javascript 回调到专门的 Web 服务),您是否需要将您的模型呈现为您的 javascript 可以使用的东西,例如 json 数组。

    例如在您的视图中

     <script>
     @foreach(var mod in Model)
     {
          @:javascriptFunc(@Newtonsoft.Json.JsonConvert.SerializeObject(mod));
     }
     </script>
    

    这将为您的IList&lt;TrackerModel&gt; 中的每个项目调用您的javascriptFunc。每个TrackerModel都是使用Newtonsfot.Json序列化的,应该是Mvc自动包含的,但是如果Mvc 3中没有,可以通过nuget添加:https://www.nuget.org/packages/Newtonsoft.Json

    【讨论】:

    • 您需要在调用 javascriptFunc 之前添加 @:。我在我的原始帖子中忘记了这一点。这指示 razor 将行输出为纯文本。
    • 根据您的条件编译,来自stackoverflow.com/questions/6655696/…,您需要在代码中添加/*@cc_on @*/
    • 我需要在代码的哪个位置添加 /*@cc_on @*/ ?在脚本标签内。
    • 我认为这并不重要,但我会推迟您参考的问题。但请尝试在 @model 语句之后将其添加到视图顶部
    • 当前上下文中不存在错误'cc_on' ??不管我把它放在哪里?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 2020-07-26
    • 2016-12-09
    • 2017-03-25
    相关资源
    最近更新 更多