如何在ASP .NET MVC 2中呈现动态列表

时间:2011-10-06 14:06:32

标签: asp.net-mvc asp.net-mvc-2

ASP .NET MVC2应用程序。

Site.Master文件包含多个ul列表链接名称,url和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表标题栏中检索链接文本

  3. 这应该是probalby包装到部分视图以创建可重用的组件。我正在使用MVC2和C#。

1 个答案:

答案 0 :(得分:1)

在您的控制器中,将所有标题收集到字符串列表中,并将该列表放在ViewData中。 e.g。

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>