区域路由配置在mvc 4中不起作用

时间:2014-10-30 12:18:02

标签: c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 model-view-controller

我尝试在mvc 4中使用区域但是路由配置无法正常运行错误找不到资源" / UserAdmin / Menu / MenuPermissions"

我创建了两个名为" UserAdmin"和#34;硕士"。 我的主页已放置在根控制器中,请帮助我访问区域视图

我的代码是

  1. RouteConfig.cs

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        AreaRegistration.RegisterAllAreas();
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Login", action = "LoginPage", id = UrlParameter.Optional },
            namespaces: new[] { "SRR.Controllers" }
        );
    }
    
  2. UserAdminAreaRegistration.cs

    public class UserAdminAreaRegistration : AreaRegistration
    {
      public override string AreaName
      {
        get
        {
            return "UserAdmin";
        }
      }
    
      public override void RegisterArea(AreaRegistrationContext context)
      {
        context.MapRoute(
            "UserAdmin_default",
            "UserAdmin/{controller}/{action}/{id}",
            new { action = "Index", id = UrlParameter.Optional }                
        );
      }
    }
    
  3. 在视图页面中调用

       <a href="~/UserAdmin/Menu/MenuPermissions"> </a>
    
  4. 菜单控制器

    public class MenuController : Controller
    {
    //
    // GET: /UserAdmin/Menu/
    
    readonly  MenuClass _menu = new MenuClass();
    
    public ActionResult MenuPermissions()
    {
        Session["username"] = "1001";
        if (Session.Count == 0)
        {
            return RedirectToAction("");
        }
        else
        {
            List<Menu> menuList = new List<Menu>();
            menuList = _menu.GetAllMenuItems();
            return View(menuList);    
        }            
    }
    }
    
  5. 提前致谢

2 个答案:

答案 0 :(得分:1)

根据您的代码,

public class MenuController : Controller
{
//
// GET: /Menu/

readonly  MenuClass _menu = new MenuClass();

public ActionResult MenuPrivilages()
{
    Session["username"] = "1001";
    if (Session.Count == 0)
    {
        return RedirectToAction("");
    }
    else
    {
        List<Menu> menuList = new List<Menu>();
        menuList = _menu.GetAllMenuItems();
        return View(menuList);    
    }            
}
}

您的链接应为<a href="~/UserAdmin/Menu/MenuPrivilages"> </a>而不是<a href="~/UserAdmin/Menu/MenuPermissions"> </a>

您的结构应如下所示

答案 1 :(得分:1)

将您的RgisterArea更改为以下

public override void RegisterArea(AreaRegistrationContext context)
  {
    context.MapRoute(
        "UserAdmin_default",
        "UserAdmin/{controller}/{action}/{id}",
        new { controller="Menu" action = "MenuPermissions", id = UrlParameter.Optional }                
    );
  }

让我知道它是否有效?