MVC Anonymous JSON返回错误的布尔值?

时间:2014-07-15 21:01:10

标签: asp.net-mvc json ravendb

我正在使用RavenDB实现完整日历。

我做一个简单的,像往常一样匿名返回模型。

public JsonResult GetHolidays()
{
    return Json(Session.Query<Models.Holiday>().Select(d => new 
        { 
          id = d.Id, 
          title = d.Name, 
          start = d.DateStart, 
          end = d.DateEnd,
          allDay = true
        }), JsonRequestBehavior.AllowGet);
}

我将allDay设置为true,但结果为false。 (我将我的broswer指向控制器/ Home / GetHolidays,这是结果字符串,我之前已多次这样做以确保JSON正确)

[{"id":"holidays/97","title":"Piotr Test 2 - 1","start":"\/Date(1405284740420)\/","end":"\/Date(1405543940420)\/","allDay":false},{"id":"holidays/98","title":"Piotr Test 10 - 26","start":"\/Date(1404593542266)\/","end":"\/Date(1407703942266)\/","allDay":false},{"id":"holidays/99","title":"Piotr Test 3 - 0","start":"\/Date(1405198343713)\/","end":"\/Date(1405457543713)\/","allDay":false}]

enter image description here

我这么做了很多次。为什么结果会以false的形式返回?

即使我将其设为false,它也会保留false。我清除了缓存并重新启动了很多。不知道为什么会这样。谁知道我做错了什么?

2 个答案:

答案 0 :(得分:3)

RavenDB没有提供从索引中选择用户提供的值的方法。 您的查询尝试在查询期间执行(简单但仍然)计算,并且RavenDB不支持该计算。 您可以在查询从RavenDB返回后添加该属性。

答案 1 :(得分:1)

不完全确定这会如何影响匿名类型,但是必须在查询到RavenDB会话后使用.ToList()

它就像从DB模型中发起/继承的匿名类型......?不知道如何解释这种行为。

public JsonResult GetHolidays()
{
    return Json(Session.Query<Models.Holiday>()**.ToList()**.Select(d => new 
        { 
          id = d.Id, 
          title = d.Name, 
          start = d.DateStart, 
          end = d.DateEnd,
          allDay = true
        }), JsonRequestBehavior.AllowGet);
}

enter image description here