MonoRail を使用して返された JSON を厳密に型指定する
-
16-09-2019 - |
質問
$.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 エラーが発生します)。
私がやっていることを行うより良い方法はありますか?返すデータを厳密に型指定する必要がありますか、それともこのアプローチで十分ですか?
ありがとう。
解決
私は投影法を使用します(SetProjection()
) そして SetResultTransformer()
結果を DTO に厳密に型指定します。
見る:
- http://www.nhforge.org/doc/nh/en/index.html#querycriteria-projection
- http://www.junasoftware.com/blog/nhibernate-setresulttransformer-and-dto.aspx
- http://ayende.com/Blog/archive/2007/08/30/Slicing-amp-Dicing-Queries-with-NHibernate.aspx
- http://devlicio.us/blogs/derik_whittaker/archive/2009/05/27/nhibernate-amp-setprojects-setprojects-w-list-gotcha.aspx
他のヒント
あなたがすでに使用してみました。
[return: JSONReturnBinder(Properties = "ID,FieldName")]
public object ProfileFields()
{
var userfields = _profileSvc.GetFields(282);
return userfields;
}
私はこのことができます願っています。
まず、私はIListのようにアクションの戻り値を変更します...
私はセッションは「VARフィールド」の遅延実行から生じる可能性があるエラーを閉じたと思います。あなたはfields.ToList()へのあなたのreturn文を変更した場合、それはラムダ式の実行を強制し、あなたがセッションエラーを取り除くかもしれません。
[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();
}
所属していません StackOverflow