使用 MonoRail 强类型返回 JSON

发布于 2024-07-30 17:44:04 字数 445 浏览 11 评论 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 错误,因为会话已关闭)。

有更好的方法来做我正在做的事情吗? 我应该强类型化我要返回的数据还是这种方法足够?

谢谢。

I am calling the following method in my controller using $.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;
    }

My _profileSvc comes back with extra data that I don't need (actually I get NHibernate errors because the session is closed).

Is there a better way to do what I am doing? Should I strongly type the data I am returning or is this approach sufficient?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

凶凌 2024-08-06 17:44:04

您是否已经尝试过使用

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

我希望这会有所帮助。

Have you already tried using

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

I hope this helps.

擦肩而过的背影 2024-08-06 17:44:04

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

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

[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();
    }

First, I would change the return value of the action to be an IList...

I think that the session closed error may stem from a delayed-execution of 'var fields'. If you change your return statement to fields.ToList(), that will force the execution of the lambda expression and you might get rid of the Session error:

[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();
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文