-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