【问题标题】:How to foreach inside script tag in ASP.NET MVC [closed]如何在 ASP.NET MVC 中 foreach 内部脚本标记 [关闭]
【发布时间】:2015-02-20 12:57:16
【问题描述】:

这是我的日历代码:

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
    <script>
        $(document).ready(function () {
            $('#calendar').fullCalendar({
                editable: false,
                events: [{
                    @foreach (var item in Model) {
                        title : @Html.DisplayFor(modelItem => item.EventName),
                        start : @Html.DisplayFor(modelItem => item.StartDate),
                        end : @Html.DisplayFor(modelItem => item.EndDate)
                    }
                }]
            });
        });
    </script>
    }

我在 foreach 中遇到了一些问题,@Html.DisplayFor(modelItem =&gt; item.EventName), @Html.DisplayFor(modelItem =&gt; item.StartDate)@Html.DisplayFor(modelItem =&gt; item.EndDate) 带有红色下划线,所以我不知道我需要更改或修复什么。
谢谢。

【问题讨论】:

  • 文件顶部有@model 声明吗?

标签: javascript c# jquery html asp.net-mvc


【解决方案1】:

@Html.Raw 在这种情况下应该适合你。

$(document).ready(function () {
        $('#calendar').fullCalendar({
            editable: false,
            events: [{
                @foreach (var item in Model) {
                     @Html.Raw("title :"+item.EventName+",start :"+ item.StartDate+",end :"+ item.EndDate);                         
                }
            }]
        });
    });

【讨论】:

    【解决方案2】:

    由于您可能希望每个数组项都有一个 JSON 对象,因此您需要为每个项发出一对 {} 大括号。我在下面用外大括号加上 string.Join 来发出内部大括号。仅当列表中至少有一项时,这才能正常工作。希望我所有的牙套都匹配。使用 Html.Raw 时要小心,如果用户指定诸如“EventName”之类的内容,他们可能会嵌入恶意 javascript,因此您应该采取适当的预防措施来清理/编码这些值。

    events: 
       [
         @(Html.Raw("{" 
            + string.Join("},{", 
                 Model.Select(m=> "title:\"" + m.EventName + "\",start:\"" + item.StartDate + "\",end:\"" + item.EndDate + "\"" ))     
            + "}" )
         )
       ]
    

    使用您的浏览器检查生成的 HTML,看看您是否获得了预期的 javascript。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-30
      • 1970-01-01
      相关资源
      最近更新 更多