【发布时间】:2011-06-19 14:18:52
【问题描述】:
有没有办法为控制器中的每个操作制作链接列表,而不必添加
<li><%= Html.ActionLink("Link Name", "Index", "Home")%></li>
每个项目?
【问题讨论】:
标签: asp.net-mvc routing hyperlink
有没有办法为控制器中的每个操作制作链接列表,而不必添加
<li><%= Html.ActionLink("Link Name", "Index", "Home")%></li>
每个项目?
【问题讨论】:
标签: asp.net-mvc routing hyperlink
是的,有。
您可以返回一个键值对的 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>
【讨论】:
除了griegs answer,通过反射构造控制器动作列表可能会有所帮助。在这种情况下,您可能需要查看:
new ReflectedControllerDescriptor(typeof(TController)).GetCanonicalActions()
此答案归功于:Accessing the list of Controllers/Actions in an ASP.NET MVC application
【讨论】: