通用控制器,多个区域 - 需要路由?

时间:2012-10-15 10:32:13

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

我在库中定义了一个控制器。我想通过我的3个区域可以访问这个控制器。此时,当通过例如“admin”区域(即/ admin / contact的url)访问时,未找到控制器(假设“联系人”)。但是,通过“/ contact”访问时它确实有效。

区域是否需要路由配置以允许通过这些区域访问公共控制器?

感谢。

1 个答案:

答案 0 :(得分:1)

您可以将此控制器放在命名空间中:

namespace MvcApplication1.Controllers.MyAreas
{
    public class ContactsController : Controller
    {
        ...
    }
}

然后在您的区域注册中指定此命名空间:

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "Admin_default",
        "Admin/{controller}/{action}/{id}",
        new { action = "Index", id = UrlParameter.Optional },
        new[] { "SomeLibrary.Controllers.MyAreas" }
    );
}

现在,当您导航到/admin/contacts/index时,Index的{​​{1}}操作将被执行。