我使用$ .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错误,因为会话已关闭)。
有没有更好的方法来做我正在做的事情?我应该强烈输入我要返回的数据还是这种方法足够了?
感谢。
答案 0 :(得分:1)
您是否已尝试使用
[return: JSONReturnBinder(Properties = "ID,FieldName")]
public object ProfileFields()
{
var userfields = _profileSvc.GetFields(282);
return userfields;
}
我希望这会有所帮助。
答案 1 :(得分:0)
我会使用投影(SetProjection()
)和SetResultTransformer()
将结果强烈输入到DTO。
请参阅:
答案 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();
}