MVC新手 - 如何创建一个包含控制器链接的视图?

时间:2011-03-03 21:43:08

标签: c# asp.net-mvc-2 .net-4.0

这肯定是一个基本问题,但我对MVC(和ASP.NET)有足够的新意见,我甚至不知道如何在不解释的情况下提出问题......

我想在母版页上有一个标签,用于加载包含指向其他视图的链接的视图。目的是创建一个“管理”视图,其中包含各种控制器/操作/视图的链接(操作链接?),以维护我的数据库的主表。所有这些都将通过授权过滤器得到保护。

因此,主要标签会显示Admin。这应该将带有操作链接的视图加载到TableA,TableB等的Controller / View。然后单击其中一个链接,然后将我带到View,我可以在该视图上对该特定表执行CRUD操作。我已经构建了这些,但是使用Shared / Site.Master视图来访问每个表,为每个表创建一个单独的选项卡 - 不好。

我设想了一个可点击的表名的垂直列表。

这是否足够清楚?我甚至不确定我需要在这里使用的术语......

谢谢, 戴夫

2 个答案:

答案 0 :(得分:2)

因此,建议您尽快阅读NerdDinner教程,它涵盖了所有基础知识。

你想要的是一个AdminController。它的索引动作将返回一个视图。视图文件是您放置动作链接的地方。

主页面,然后只需调用

@Html.ActionLink("Admin", "index", "admin");

并且应该生成您正在寻找的链接,假设您还没有使用路由进行修改。

答案 1 :(得分:0)

以下是基于SharpArch扩展方法的强类型操作链接的想法。

public IHtmlString ActionLink<T>(this HtmlHelper htmlHelper, Expression<Action<T>> action, string linkText) where T : Controller
{
  var methodCall = action.Body as MethodCallExpression;
  if (methodCall == null)
    throw new ArgumentException("Action must be a method call", "action");

  var actionName = methodCall.Method.Name;
  var controllerName = GetControllerName(typeof(T));

  return htmlHelper.ActionLink(linkText, actionName, controllerName);
}

public static string GetControllerName(Type controllerType)
{
  return controllerType.Name.Substring(0, controllerType.Name.Length - "Controller".Length);
}

然后你可以用这种方式:

@Html.ActionLink<HomeController>(c => c.Index(), "My Home Index")

请注意,这只是一个想法,尚未经过测试。

希望这有帮助。