2011-07-15 53 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

我會使用RenderAction其中action方法將獲取從數據庫中的數據,並把它作爲模型視圖,將生成HTML做

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

,並查看U可以這樣做

@foreach(var item in Model) 
{ 
    <li>@Html.ActionLink("Menu Title 1", "Factors", "LearnMoreAbout", new { ID = item.ID } 
} 

無論您使用視圖還是僅從視圖返回內容,RenderAction都會生成一個新的調用控制器

0

你可以......你可以調用Html.RenderAction並在你的控制器中返回Content(「你的HTML在這裏」) 爲什麼要從數據庫中生成所有數據呢?代碼可能有點醜陋?

相關問題