【问题标题】:mvc4 areas multiple routemvc4 区域多路由
【发布时间】:2013-03-01 13:46:15
【问题描述】:

我在 MVC4 中有一个网站,在名为“HomeController”的控制器内有一个区域“admin”,在我的项目中还有一个文件夹控制器,其控制器名为“HomeController”:当我调用

public ActionResult LogOff()
{
    FormsAuthentication.SignOut();
    return RedirectToAction("Index", "Home");
}

我得到错误: 找到了与名为“Home”的控制器匹配的多种类型。如果为该请求提供服务的路由 ('{controller}/{action}/{id}') 未指定命名空间来搜索与请求匹配的控制器,则可能会发生这种情况。如果是这种情况,请通过调用带有“namespaces”参数的“MapRoute”方法的重载来注册此路由。

“主页”请求找到了以下匹配的控制器: site1.co.il.Controllers.HomeController site1.co.il.Areas.Admin.Controllers.HomeController

【问题讨论】:

  • 你注册了这个区域吗? LogOff 方法属于哪个控制器?
  • 是的,我做到了。如果我在 mvc 中使用区域,我可以在不同的区域使用相同的控制器名称吗?

标签: asp.net-mvc-4 asp.net-mvc-areas


【解决方案1】:

如果你在不同的区域有相同的控制器和动作,MVC4 无法选择其中之一,除非你指定哪个是想要的路由。

你可以这样指定:

return RedirectToAction("action", "controller", new { area = "area" });

在您的情况下,area 应该是 "admin"

如果要引用根Controller,区域应该是""

您也可以尝试像这样引用适当的控制器:"admin\home",但我不知道等效的 "\home" 是否可以工作。

【讨论】:

    猜你喜欢
    • 2016-11-10
    • 2013-10-03
    • 2013-06-17
    • 1970-01-01
    • 2013-11-03
    • 2012-05-24
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    相关资源
    最近更新 更多