2011-12-20 25 views
0

私は既存のwebformsアプリケーションをmvc 3カミソリに変換することを任されています。部分的なビューを動的に検索、ロード、追加する

現在、アプリケーションには静的なヘッダーのユーザーコントロールと動的に作成された他のユーザーコントロールの数が「n」のaspxページがあります。ファイルの背後にあるコードでは、以下のコードをさまざまな特定のセクションで実行して、データベースから提供される情報でユーザーコントロールを動的に処理します。

私は静的に部分的なビューを作成する方法を知っていますが、MVCにはいくらか新しく、この新しい "aspx"ページを定義する方法と、動的に部分ビューをロードして追加する方法webformsコード)?

btw、コードはC#にもあります。

Dim parent As Control = Page.FindControl(_moduleSettings.PaneName) 

Dim portalModule As PortalModuleControl = CType(Page.LoadControl(_moduleSettings.DesktopSrc), PortalModuleControl) 

    parent.Controls.Add(portalModule) 

ページがレンダリングされているときにこのようにすることができます。私はできるだけシンプルにしたい。

「PaneNameは」ページで、それは(左、右、またはメイン)表示される場所を決定する親の変数に設定されます

「DeskTopSrc」は、ディスプレイへの部分的なビューの名前です。

コードの後ろにあるコードを取り出し、メインビューに配置します。ビューで上記の処理ロジックを実行する(少年は、ビューの後ろにaspxコードを切り替えると、私はループをスローする。私は、ビューで処理することに慣れていなければならない。

@ Html.PartialView(部分ビュー名)を使用して部分ビューを表示します。このビューには、特定のモデルに関連付けられたグリッドが表示されます。

以下は私が不明な部分です。

私はコントローラに関連付けられたメインビューに対してデータベース処理を行いましたが、データベース処理を行う必要のある部分ビューでは処理しませんでした。

メインビュー(この部分的なビューを含む)に関連付けられたコントローラで、この部分ビューのデータベース処理ロジック(存在する場合)を実行します。これらの「部分図」をループしながら、私はデータを取得し、ビューを表示することができますアクションIndexメソッドで

....

ああ、私はそれを得たと思います.....

慎重に考えてみたら、誰かがここで最後の声明で私を助けてくれたら、私はそれを高く評価します。

1.ビュー/共有フォルダに必要な特定のHTMLマークアップを使用して、部分的にビューを静的に作成しました。

メインビュー2.In、私はすでに私は、データベースから自分の名前を検索すると、部分的ビューをレンダリングしますHTMLの特定の場所で

@Html.Partial(ViewData["partial_view_left"]) 
@Html.Partial(ViewData["partial_view_right"]) 
@Html.Partial(ViewData ["partial_view_main"]) 

文を持っています。

3。コントローラのインデックスメソッドでは、次の操作を実行する必要があります。

a)ロードする新しいコントローラのインデックスアクションメソッドで変換されたロジック(PageLoadイベントの既存のWebFormsページのCodeBehindから)をループします部分ビューは動的に表示されます。

1) Find out where the partial view will be displayed (left, right, main) from the database via the "parent" variable. 

2) Find out the name of the partial view that will be displayed from the database via the “DesktopSrc” variable. 

例:ViewData ["partial_view_left"] = "left_view"; OR

ViewData["partial_view_right"] = "right_view"; OR 

    ViewData["partial_view_main"] = "main_view"; 

3)ここでは、部分ビューを正しく表示する方法がわかりません。

は、私は他にステップ3.A.2

What statement can I use in this Index method of the Controller that will accomplish this? 

からデータベースから取得コントローラから各部分のビューをレンダリングする「Controls.Add」方法Webフォームと同等のものを持っている必要が私が動的に親ビューの中にいくつかの部分的なビューを表示する必要がある場合、どのようにこれはMVCで達成されますか?

私は各部分的なビューについて知っていますが、それに関連付けられたモデルを送信することができますが、1つのアクションメソッドから実行時にメインビューページ内にいくつかの部分的なビューを配置する方法がわかりません。あなたの部分的なビューはデータベース検索のように、いくつかの処理を行う必要がある場合

答えて

0

、あなたはそのことができます(同じコントローラ上にある必要はありません)。これは、アクションメソッドを呼び出します

@{Html.RenderAction("ActionName");} 

を使用する必要がありますロジックに基づいてビューを動的に選択し、ViewModelにデータベースからのデータを取り込みます。

public ActionResult ActionName() 
{ 
    var modelData = GetData(); 
    return View(settings.DesktopSrc, modelData); 
} 
関連する問題