如何在ASP.NET MVC Controller上与两个名称共享相同的操作

时间:2018-02-12 09:23:35

标签: c# asp.net asp.net-mvc asp.net-routing

情况是,我需要在ASP.NET控制器中对两个动作名称使用相同的方法。详细说明,http://mydomain/Members/Indexhttp://mydomain/Members/Browse应该相同,或者只有成员控制器使用相同的方法:

public ActionResult Browse()
{
    var members = _dbContext.Members.ToList();

    return View("Browse", members);
}

目前,我使用两个名为“Browse”和“Index”的ActionResults使用相同的代码,但可能有更好的方法来执行此操作。我查看了属性,但 ActionName 属性并不能帮助我完成所需。此外,谷歌搜索为我提供了建议相同的方法,但不同的HTTP请求类型方法重载示例。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我在控制器中使用了Index操作,并为“Members / Browse”添加了一条独占路线,指向“Index”操作成员“控制器。因为反过来说,“Members /”会给出404错误。

现在是控制器动作(示例):

public ActionResult Index()
{
    var members = _dbContext.Members.ToList();

    return View("Index", members);
}

现在在RouteConfig中定义的路由:

routes.MapRoute(
    name: "MemberBrowseRoute",
    url: "Members/Browse",
    defaults: new { Controller = "Members", Action = "Index" });

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);