【问题标题】:Area Route Config is not working in mvc 4区域路由配置在 mvc 4 中不起作用
【发布时间】:2014-10-30 12:18:01
【问题描述】:

我尝试在 mvc 4 中使用区域,但路由配置不起作用,出现错误找不到资源“/UserAdmin/Menu/MenuPermissions”

我创建了两个名为“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);    
        }            
    }
    }
    

提前致谢

【问题讨论】:

  • 根据您的链接 ,您是说Menu 是UserAdmin 区域下的控制器,对吗?你能告诉我菜单控制器的代码吗?
  • 是的,我更新了我的问题,请查看并帮助我

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


【解决方案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);    
    }            
}
}

您的链接应该是&lt;a href="~/UserAdmin/Menu/MenuPrivilages"&gt; &lt;/a&gt; 而不是&lt;a href="~/UserAdmin/Menu/MenuPermissions"&gt; &lt;/a&gt;

你的结构应该是这样的

【讨论】:

  • 我更新了我的问题,它不适用于任何控制器,请帮助我
【解决方案2】:

将您的 RgisterArea 更改为以下内容

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

让我知道它是否有效?

【讨论】:

  • 您是否在RegisterArea方法中指定其他区域的Routes?
猜你喜欢
  • 1970-01-01
  • 2017-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多