2011-10-06 117 views
0

ASP .NET MVC2應用程序。如何在ASP中呈現動態列表.NET MVC 2

的Site.Master文件包含UL列表鏈接名稱,網址和URL的內容存儲在數據庫中的表

create table webconte(
    elemname char(20) not null, 
    itemorder integer not null, 
    caption char(40), 
    webcontent text, 
    primay key (elemname, itemorder)) 

在列表中的元素和標題的數量是硬編碼在視圖喜歡的號碼:

<ul class="nav1"> 
    <li><a href='<%= Url.Action("WebContent", "Home", new { elemname="MainMenu", itemorder=0}) %>'>caption1</a></li> 
    <li><a href='<%= Url.Action("WebContent", "Home", new { elemname="MainMenu", itemorder=1}) %>'>caption2</a></li> 
    <li><a href='<%= Url.Action("WebContent", "Home", new { elemname="MainMenu", itemorder=2}) %>'>caption3</a></li> 
</ul> 

WebContent操作返回包含html頁面的webcontent字段值。

如何創建視圖,以便:

  1. 的項目不被硬編碼:儘可能多的li元素,因爲在數據庫項目呈現。

  2. caption1,caption2的,...鏈接文本從webconte表標題欄

檢索這應probalby包裹以局部視圖來創建可重複使用的部件。我使用MVC2和C#。

回答

1

在您的控制器中,將所有字幕收集到字符串列表中,並將該列表放入ViewData中。例如

var captions = new List<string>(); 
// add stuff to captions... 
ViewData["captions"] = captions 

那麼你的頁面上,你可以提取這些字幕和渲染列表:

<ul class="nav1"> 
<% 
    var captions = ViewData["captions"] as List<string>(); 
    for (int i = 0; i < captions.Count; ++i) { 
%> 
    <li><a href='<%= Url.Action("WebContent", "Home", new { elemname="MainMenu", itemorder=i}) %>'><%= captions[i] %></a></li> 
<% } %> 
</ul>