这是我的日历代码:
@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 => item.EventName), @Html.DisplayFor(modelItem => item.StartDate)
和@Html.DisplayFor(modelItem => item.EndDate)
标有红色,所以我不知道我需要更改或修复什么。
三江源。
答案 0 :(得分:2)
@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);
}
}]
});
});
答案 1 :(得分:0)
由于您可能希望每个数组项都有一个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。