2009-08-06 16 views
3

[OK]を、私はまだasp.netとMVCフレームワークのハングアップを取得し、古典的なASPとVBから私の知識を変換する - のでください穏やかな。ASP.NET MVC C#:複数のテーブル/クエリからのデータをビューに表示する

私は最初のビュー(/ home/details/X)がうまく機能していますthanks to previous help pointing me in the right direction、今私はMVCビューに複数のテーブルとクエリ/ビューからデータを追加する必要があります(私はSQLとMVCの両方が異なる意味の単語表記)。

私は誰かが私のために答えを書くのを探しているわけではありません(彼らが本当に精力的でない限り)。それを理解してこれを自分でやってください。

私の問題

あり、私はこのビューに表示する必要がある複数のデータセットがあり、それぞれ異なるデータセットを確立し、適切なPK/FK 1-Mの関係を持って、得られた記録があることが必要となりますループスルー。私は従来のASP時代には、以前に

これを行っているだろうか

、私はちょうどに沿ってselect文で、データが使用されることになっていたページの先頭にSQLクエリを定義しているだろう行:それが終わった後はQUERY_NAMEではないBOF/EOFがアップし、その後、あなたはそのクエリから欲しかったフィールド名にドロップすると、それがすべて完了している間に

SELECT * FROM query_name 
WHERE query_uniquecolumnname = Request.QueryString("value") 

は、あなたがdoを設定したいです。

これはどのように達成できますか?

私の古典的なASP知識から早送りすると、MVCでどのように同じ結果を達成できますか?

私が使用したいテーブル/ビューは、すでにデータモデル内に定義されています(そこにはリレーションシップがプラスであると表示されています)。関連するデータだけが表示されるように、詳細ビューに表示されているレコードのIDを使用します。事前

答えて

8

お探しのコンセプトはViewModelです。基本的には、ビューに使用されるすべてのデータを含むカスタムクラスです。したがって、異なるテーブルのすべてのデータを統合し、プロパティとして公開します。データアクセスレイヤーを使用している場合、これは多くの場合、いくつかのエンティティをまとめているだけの単純なものです。生のSQLを使用している場合は、プロパティにアクセスしたときにクエリを実行します。

次に、あなたはあなたのビューがそうのように、ViewModelに継承するだろう:

<%= Html.TextBox("MyProperty", Model.MyProperty) %> 
:あなたのビューで今すぐ

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
Inherits="System.Web.Mvc.ViewPage<MvcApplication1.Models.MyViewModel>" %> 

、あなたは、単にのような文を書くことによって、あなたのオブジェクトのすべての異なるプロパティにアクセスすることができます

コントローラからビューを構築するには、クラス(MyViewModel)の新しいインスタンスを作成し、必要な詳細レコードのIDを渡します。クラスのロジックが適切なデータを取得します。その後、通常のようにあなたのコントローラからあなたのビューを返します。

var myDetailsModel = new MyViewModel(detailsID); 
    return View(myDetailsModel); 
+0

あなたはモデルを構築するの生のSQLの方法の例を挙げてもらえますか? –

0

おかげで、私はそれはあなたが稼働して取得する必要があります最も基本的なシナリオをカバーしてASP.NET MVCに

http://weblogs.asp.net/scottgu/archive/2009/04/28/free-asp-net-mvc-nerddinner-tutorial-now-in-html.aspx

をこのプライマーを読んで推薦します。

ただし、複数の結果セットを1つにまとめてビューとして返す場合は、カスタムオブジェクトを作成して結果セットをマップしてから、ビュー内のカスタムオブジェクトにバインドできます。

0

このように複数のものをWebページに表示する必要がある場合は、通常はRenderActionを使用して行います。

RenderActionでは、ビューの特定の部分(実際にはサブビュー)専用のコントローラメソッドを使用できるため、強く型付けされたデータの単一のデータセットをその「サブビュー」に渡すことができます。

RenderActionはMicrosoft.Web.Mvc( "先物")アセンブリに含まれています。

あなたがこのすべてで新しくいらっしゃいましたら、お詫び申し上げます。これは少し出血のエッジですが、とにかくそれを知る必要があります。最初にNerdDinnerチュートリアルをチェックしてください。

http://www.andreas-schlapsi.com/2008/11/01/renderaction-and-subcontrollers-in-aspnet-mvc/

http://davidhayden.com/blog/dave/archive/2009/04/04/...

関連する問題