使用MonoRail强烈输入返回的JSON

时间:2009-08-14 14:34:56

标签: jquery json castle-monorail

我使用$ .getJSON()

在我的控制器中调用以下方法
    [return: JSONReturnBinder]
    public object ProfileFields()
    {
        var userfields = _profileSvc.GetFields(282);
        var fields = from f in userfields
                     select new {f.ID, f.FieldName};

        return fields;
    }

我的_profileSvc带回了我不需要的额外数据(实际上我得到NHibernate错误,因为会话已关闭)。

有没有更好的方法来做我正在做的事情?我应该强烈输入我要返回的数据还是这种方法足够了?

感谢。

3 个答案:

答案 0 :(得分:1)

您是否已尝试使用

[return: JSONReturnBinder(Properties = "ID,FieldName")]
public object ProfileFields()
{
        var userfields = _profileSvc.GetFields(282);
    return userfields;
}

我希望这会有所帮助。

答案 1 :(得分:0)

答案 2 :(得分:0)

首先,我会将操作的返回值更改为IList ...

我认为会话关闭错误可能源于'var fields'的延迟执行。如果你将return语句更改为fields.ToList(),那将强制执行lambda表达式,你可能会摆脱Session错误:

[return: JSONReturnBinder]
    public object ProfileFields()
    {
            var userfields = _profileSvc.GetFields(282);
            var fields = from f in userfields
                         select new {f.ID, f.FieldName};

    return fields.ToList();
    }