0

我在我的控制器中使用 $.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 错误,因为会话已关闭)。

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

谢谢。

4

3 回答 3

1

您是否已经尝试使用

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

我希望这有帮助。

于 2011-01-28T14:11:41.640 回答
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();
    }
于 2010-01-14T19:40:37.487 回答