我一直在关注这个视频教程:https : //youtu.be/IpCEfbLiwag,希望能够实现一个包含 FullCalendar 的页面,该页面包含Task
数据库中我的表中的日期。虽然没有必要通过视频来提供帮助,但我认为包含源代码并不是一个坏主意。
我也有一些适合我的代码的更改,所以这里是我的CalendarController。
public ActionResult Index()
{
return View();
}
public JsonResult GetEvents()
{
List<TaskModel> taskList = new List<TaskModel>();
string connectionString = Configuration["ConnectionStrings:DefaultConnection"];
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string sql = "ReadAllTasks";
SqlCommand command = new SqlCommand(sql, connection);
command.CommandType = CommandType.StoredProcedure;
using (SqlDataReader dataReader = command.ExecuteReader())
{
while (dataReader.Read())
{
TaskModel task = new TaskModel();
task.Id = Convert.ToInt32(dataReader["Id"]);
task.Name = Convert.ToString(dataReader["Name"]);
.....................
task.Comments = Convert.ToString(dataReader["Comments"]);
task.StartDate = Convert.ToDateTime(dataReader["StartDate"]);
task.EndDate = Convert.ToDateTime(dataReader["EndDate"]);
.....................
if (task.DependencyId == 1)
{
task.DependencyId = Convert.ToInt32(dataReader["DependencyId"]);
}
task.PhaseId = Convert.ToInt32(dataReader["PhaseId"]);
taskList.Add(task);
}
}
connection.Close();
}
return new JsonResult(taskList);
}
基本上,使用存储过程,我从 sql server 获取所有任务,将它们放在一个列表中,然后以 Json 格式返回它们,如下所示:
(这是我调用 /Calendar/GetEvents 时得到的)
[{"id":3,"name":"New Task","isGate":false,"condition":"","precondition":"","comments":"","startDate":"2012-12-12T11:11:00","endDate":"2014-12-12T11:11:00","inProgress":true,"finished":false,"aborted":false,"assignedTo":"1fa2f008-f7fe-43ba-9c5d-fd9e67e995d3","assignedToName":null,"dependencyId":0,"phaseId":1},{"id":1004,"name":"New Task","isGate":false,"condition":"","precondition":"","comments":"","startDate":"2012-12-12T11:11:00","endDate":"2014-12-12T11:11:00","inProgress":false,"finished":true,"aborted":false,"assignedTo":"1fa2f008-f7fe-43ba-9c5d-fd9e67e995d3","assignedToName":null,"dependencyId":0,"phaseId":1},{"id":1008,"name":"New Task","isGate":false,"condition":"","precondition":"","comments":"","startDate":"2012-12-12T11:11:00","endDate":"2014-12-12T11:11:00","inProgress":false,"finished":true,"aborted":false,"assignedTo":"5a4b508f-5e12-418f-9ce4-8e3061b833fe","assignedToName":null,"dependencyId":0,"phaseId":2012},{"id":3004,"name":"New Task","isGate":false,"condition":"","precondition":"","comments":"","startDate":"2012-12-12T11:11:00","endDate":"2014-12-12T11:11:00","inProgress":false,"finished":false,"aborted":false,"assignedTo":"711f2295-d8a4-49dd-88be-ea7143aa11d8","assignedToName":null,"dependencyId":0,"phaseId":1}]
现在,可能是最重要的部分。Index.cshtml包含以下内容:
<!DOCTYPE html>
<html lang='en'>
<head>
<link href="https//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" type="text/css" rel="stylesheet" />
<link href="https//cdnjs.cloudflare.com/ajax/libs/fullcalendar/2.6.1/fullcalendar.min.css" type="text/css" rel="stylesheet" />
</head>
<body>
<div class="container">
<div class="row">
<div class="col-xs-12">
<br />
<div id="bootstrapModalFullCalendar">
</div>
</div>
</div>
</div>
<div id="fullCalModal" class="modal fade">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">x</span> <span class="sr-only">close</span></button>
<h4 id="modalTitle" class="modal-title"></h4>
</div>
<div id="modalBody" class="modal-body"></div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<a class="btn btn-primary" id="eventUrl">Event Page</a>
</div>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.2/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/2.6.1/fullcalendar.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script>
$(document).ready(function () {
$('#bootstrapModalFullCalendar').fullCalendar({
header: {
left: '',
center: 'prev title next',
right: ''
},
eventClick: function (event, jsEvent, view) {
$('#modalTitle').html(event.Name);
$('#modalBody').html(event.Comments);
$('#eventUrl').attr('href', event.url);
$('#fullCalModal').modal();
return false;
},
events: '@Url.Action("GetEvents","Calendar")'
});
});
</script>
</body>
</html>
当我转到日历/索引时,只有一个空白页。我在控制台中没有收到任何错误或警告。出了什么问题?