开创全省的链接列表,是否有一种方法,使的在控制,而不必每一个动作链接列表添加从控制器动作ASP.NET MVC
<li><%= Html.ActionLink("Link Name", "Index", "Home")%></li>
每个项目?
开创全省的链接列表,是否有一种方法,使的在控制,而不必每一个动作链接列表添加从控制器动作ASP.NET MVC
<li><%= Html.ActionLink("Link Name", "Index", "Home")%></li>
每个项目?
是的。
您可以返回可以呈现为定位标记的键值对的SelectList。
或者,您可以创建在一个模型,这是不是最好的地方吧,控制器,它返回到视图,您可以再itterate通过。
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
不对列表锚=新的List ();并返回View(Anchors)进入相同的动作? 公众的ActionResult指数() { } 我得到一个错误CS1061:“对象”不包含“锚”的定义,并没有扩展方法“锚” –
2009-10-14 20:06:45
myAnchorList是一类和锚是名字类型为myAnchorList的通用列表。因此,您需要将myAnchorList放置在您的代码有权访问的名称空间中。那么你将该列表传递给视图,视图也需要访问该命名空间。 – griegs 2009-10-14 20:34:52