2

クエリ結果を作成するとしましょう

var query = from a in tblXYZ join c in tblABC on a.id = b.id select new {a.x, b.x};

それをビューに渡す最良の方法は何ですか? 新しいオブジェクトを作成し、クエリ結果をそれにコピーする必要がありますか?

4

3 に答える 3

3

ビュー固有のモデルを作成するには、ほとんどの場合、これが推奨されるメカニズムだと思います。また、コントローラーでクエリを具体化し、ビューをリストに渡すという@Marcの推奨事項を2番目に使用します。クエリに問題がある場合、クエリがビューではなくコントローラーで実行されているかどうかを診断する方がはるかに簡単です。その時点で、スタック トレースは実際に役立ちます。

于 2010-01-23T23:24:54.020 に答える
1

示されているように、これは匿名型になり、アクセスできます (4.0 では 経由でさらに簡単になりますdynamic) が、そうするのは見苦しいです。また、現在、LINQ が延期されているため、データ アクセスがいつ発生するかについてあいまいさがあります。つまり、そのクエリをビューに渡すと、実際にはビュー中に (コントローラー内ではなく) データ アクセスを行っていることになります。

データ (本質的にビューモデル) を表すクラスを作成し、エンティティのリスト(遅延クエリではない) を返したいと思うでしょう。

于 2010-01-23T23:20:35.947 に答える
0

クエリをリポジトリに入れます。コントローラーで、そのビューの指定されたモデルビューにクエリ結果を渡します。

Model-View - コントローラーからビューにデータを転送するための指定されたクラス。

于 2010-01-24T00:22:31.653 に答える