从控制器操作ASP.NET MVC创建链接列表

时间:2009-10-14 01:26:30

标签: asp.net-mvc routing hyperlink

是否有办法为控制器中的每个操作制作链接列表,而不必添加

<li><%= Html.ActionLink("Link Name", "Index", "Home")%></li>

每个项目?

2 个答案:

答案 0 :(得分:3)

是的。

您可以返回可以呈现为锚标记的键值对的SelectList。

或者您可以在中创建一个模型,这不是它的最佳位置,控制器并将其返回到视图,然后您可以通过该视图。

public class myAnchorList
{
  public string text {get;set;}
  public string controller {get;set;}
  public string action {get;set;}
}

然后在您的代码中创建一个List<myAnchorList>

List<myAnchorList> Anchors = new List<myAnchorList>();

在列表中填入数据并返回。

return View(Anchors).

如果您已经通过模型,则需要将此列表添加到要返回的模型中。

有意义吗?如果不发表评论,我会尝试进一步解释。

修改

现在让我完成图片,我有更多的时间。

在客户端,您将拥有此未经测试的代码;

<ul>
  <% foreach(myAnchorList item in Model.Anchors){ %>
    <li><%= Html.ActionLink(item.text, item.action, item.controller)%></li>
  <% } %>
</ul>

答案 1 :(得分:2)

除了griegs answer之外,通过反射构造控制器动作列表可能会有所帮助。在这种情况下,您可能需要查看:

new ReflectedControllerDescriptor(typeof(TController)).GetCanonicalActions()

此答案归功于:Accessing the list of Controllers/Actions in an ASP.NET MVC application