这肯定是一个基本问题,但我对MVC(和ASP.NET)有足够的新意见,我甚至不知道如何在不解释的情况下提出问题......
我想在母版页上有一个标签,用于加载包含指向其他视图的链接的视图。目的是创建一个“管理”视图,其中包含各种控制器/操作/视图的链接(操作链接?),以维护我的数据库的主表。所有这些都将通过授权过滤器得到保护。
因此,主要标签会显示Admin。这应该将带有操作链接的视图加载到TableA,TableB等的Controller / View。然后单击其中一个链接,然后将我带到View,我可以在该视图上对该特定表执行CRUD操作。我已经构建了这些,但是使用Shared / Site.Master视图来访问每个表,为每个表创建一个单独的选项卡 - 不好。
我设想了一个可点击的表名的垂直列表。
这是否足够清楚?我甚至不确定我需要在这里使用的术语......
谢谢, 戴夫
答案 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")
请注意,这只是一个想法,尚未经过测试。
希望这有帮助。