从SQL Server数据库创建JSON结果

我有一个具有以下布局的SQL Server

Table (    id int

title varchar(40),

start Date(),

end Date(),

allDay bool,

username varchar(40)

);

我已经从该博客中获取了以下代码,以便根据我希望使用的数据创建JSON对象,但是他的数据存储方式有所不同。如何创建从数据库中提取的同一对象?

我猜我需要使该文件为.cshtml文件而不是.js文件,并使用此文件:

@{

var db = Database.Open("events");

var selectQueryString = "SELECT * FROM events";

}

@foreach(var row in db.Query(selectQueryString)){ }

但是,如何修改此代码以产生相同的JSON对象?

这是博客中的相关代码,我的尝试如下:

public JsonResult GetEvents(double start, double end)

{

var userName = Session["UserName"] as string;

if(string.IsNullOrEmpty(userName))

{

return null;

}

var fromDate = ConvertFromUnixTimestamp(start);

var toDate = ConvertFromUnixTimestamp(end);

var rep = Resolver.Resolve<IEventRepository>();

var events = rep.ListEventsForUser(userName,fromDate,toDate);

var eventList = from e in events

select new {

id = e.Id,

title = e.Title,

start = e.FromDate.ToString("s"),

end = e.ToDate.ToString("s"),

allDay = false

};

var rows = eventList.ToArray();

return Json(rows,JsonRequestBehavior.AllowGet);

}

编辑:

我现在正在为GetEvents命令使用以下.cshtml代码,但无法使用。有人有什么想法吗?

   @{ 

var origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);

var fromDate = origin.AddSeconds((Request["start"]));

var toDate = origin.AddSeconds(Request["end"]);

var db = Database.Open("events");

var result = db.Query("SELECT * FROM events");

var data = result.Select(x => new

{

id = x.id,

title = x.title,

start = x.start.ToString("s"),

end = x.end.ToString("s"),

allDay = false

}).ToArray();

Json.Write(data, Response.Output);

Response.ContentType = "application/json";

}

回答:

WebMatrix WebPages中没有控制器和动作。您需要编写一个单独的.cshtml页面,该页面将查询数据库并将JSON提供给响应:

@{

var db = Database.Open("events");

var result = db.Query("SELECT * FROM events");

var data = result.Select(x => new

{

id = x.id,

title = x.title,

start = x.start.ToString("s"),

end = x.end.ToString("s"),

allDay = false

}).ToArray();

Json.Write(data, Response.Output);

Response.ContentType = "application/json";

}

然后在另一个要显示日历的页面中,可以对其进行配置:

$(document).ready(function() {             

$('#calendar').fullCalendar({

theme: true,

header: {

left: '',

center: '',

right: ''

},

defaultView: 'agendaDay',

editable: false,

events: '/events.cshtml'

});

});


更新:这是一个如何使用参数化查询的示例:

@{

var origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);

var fromDate = origin.AddSeconds(int.Parse(Request["start"]));

var toDate = origin.AddSeconds(int.Parse(Request["end"]));

var db = Database.Open("events");

var sql = "SELECT * FROM events WHERE start >= @0 AND end <= @1";

var result = db.Query(sql, fromDate, toDate);

var data = result.Select(x => new

{

id = x.id,

title = x.title,

start = x.start.ToString("s"),

end = x.end.ToString("s"),

allDay = false

}).ToArray();

Json.Write(data, Response.Output);

Response.ContentType = "application/json";

}

现在您可以像这样查询页面: /events.cshtml?start=5&end=10

以上是 从SQL Server数据库创建JSON结果 的全部内容, 来源链接: utcz.com/qa/418739.html

回到顶部