2011-07-15 18 views
2

MCV3とRazorを初めて使用しています。これまでのところ、私はそれをLooooooooove。MVCコントローラでナビゲーション用パーシャルビューを生成

私は現在、部分的にナビゲーションを含むレイアウトページを持っています。

<ul id="nav-primary"> 
    <li>@Html.ActionLink("Facts", "Index", "LearnTheFacts") 
    <ul> 
     <li>@Html.ActionLink("What are the factors?", "Factors", "LearnTheFacts")</li> 
     <li>@Html.ActionLink("How can this site help?", "KnowYourRisk", "LearnTheFacts")</li> 
    </ul> 
    </li> 
    <li>@Html.ActionLink("Event Calendar", "Index", "EventCalendar")</li> 
    <li>@Html.ActionLink("Another Topic", "Index", "Hello") 
    <ul> 
     <li>@Html.ActionLink("Call w/ Values", "Test", "Hello", new { runTest = true }, null)</li> 
    </ul> 
    </li> 
</ul> 

私は、データベース内のデータから、ナビゲーションを生成する伴うだろう、より複雑な何かをしたいと思います:ここに私の部分図は、今どのように見えるかのサンプルです。上記のコードをコントローラで完全に生成し、部分的なビューをまったく使用しないでください。

理想的には、私は単一のコントローラコールを希望します。 ビューのすべてのコンテンツもデータベースに格納されます。 私は、ナビゲーションのために生成される出力はこのようなものになるだろうと信じて:

<li>@Html.ActionLink("Menu Title 1", "Factors", "LearnMoreAbout", new { ID = 0 }, null)</li> 
<li>@Html.ActionLink("Menu Title 2", "Factors", "LearnMoreAbout", new { ID = 1 }, null)</li> 
<li>@Html.ActionLink("Menu Title 3", "Factors", "LearnMoreAbout", new { ID = 2 }, null)</li> 
<li>@Html.ActionLink("Menu Title 4", "Factors", "LearnMoreAbout", new { ID = 3 }, null)</li> 
<li>@Html.ActionLink("Menu Title 5", "Factors", "LearnMoreAbout", new { ID = 4 }, null)</li> 
<li>@Html.ActionLink("Event Calendar", "Index", "EventCalendar")</li> 

これは私が手でそれを行う場合、私は、自分が足す見るものです。私はそれを生成したいと思います。

アイデア?私は何か違うことをすべきでしょうか?ありがとう。

答えて

2

私はアクションメソッドは、DBからデータを取得し、HTML

public ActionResult Navigation() 
{ 
    var model = //fetch from db; 
    return View(model); 
} 

を生成し、ビューにuが

ような何かを行うことができますビューにモデルとして渡します RenderActionを使用してそれを行うだろう
@foreach(var item in Model) 
{ 
    <li>@Html.ActionLink("Menu Title 1", "Factors", "LearnMoreAbout", new { ID = item.ID } 
} 

RenderActionは、ビューを使用するか、それとも単にコンテンツを返すかにかかわらず、コントローラへの新しい呼び出しを生成します

0

することができます... Html.RenderActionを呼び出すことができますし、あなたのコントローラでコンテンツを返します(あなたのHTMLはここにあります) なぜDBからすべてを生成しますか?コードはそのように少し醜いかもしれませんか?

関連する問題