使用 MonoRail 强类型返回 JSON
我使用 $.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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您是否已经尝试过使用
我希望这会有所帮助。
Have you already tried using
I hope this helps.
我将使用投影 (
SetProjection()
) 和SetResultTransformer()
将结果强类型化到 DTO。请参阅:
I would use a projection (
SetProjection()
) andSetResultTransformer()
to strongly-type the result to a DTO.See:
首先,我会将操作的返回值更改为 IList...
我认为会话关闭错误可能源于“var fields”的延迟执行。 如果将 return 语句更改为 fields.ToList(),这将强制执行 lambda 表达式,并且您可能会摆脱会话错误:
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: