-1

我尝试在MVC 4使用面积,但该路由配置不工作得到错误的资源不能找到“/ UserAdmin /菜单/ MenuPermissions”区路由配置是不是在MVC工作4

我已经创建了两个名为“UserAdmin”和“Master”的区域。 我的主页已经把根控制器请帮我访问区域意见

我的代码是

  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);  
        }    
    } 
    } 
    

在此先感谢

+0

根据你的链接,你说菜单是在UserAdmin区域下的控制器,它是正确的吗?你能告诉我菜单控制器的代码吗? – 2014-10-30 12:35:15

+0

是的,我更新我的问题,请参阅并帮助我 – Dinesh 2014-10-30 12:40:25

回答

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>

你的结构应该是这样的

+0

对不起朋友现在也不工作 – Dinesh 2014-10-30 13:57:12

+0

我更新了我的问题它不适用于任何控制器请帮助我 – Dinesh 2014-10-30 14:04:01

1

更改您的RgisterArea到下面

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

让我知道它的工作或没有?

+0

雅其工作,但其他地区不工作 – Dinesh 2014-10-30 16:59:24

+0

您是否指定路线对于RegisterArea方法中的其他区域? – 2014-11-13 10:26:59