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字段值。
如何创建视图以便:
项目数不是硬编码的:渲染了与数据库中的项目一样多的li元素。
caption1,caption2,...从webconte表标题栏中检索链接文本
这应该是probalby包装到部分视图以创建可重用的组件。我正在使用MVC2和C#。
答案 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>