0

我在 MVC 中创建了一个区域,然后我创建了一个简单的控制器,但我无法查看该区域或我网站的该部分中的任何页面,有人知道为什么以及如何解决这个问题。不久前我用一个区域创建了一个项目并且没有任何问题,我不知道发生了什么变化,或者我是否必须改变一些东西才能使它工作,有人可以帮助我。

没有注册的地方。

namespace RedPlanet.Areas.admin.Controllers
{
    public class CategoryController : Controller
    {
    }
}

区域:

public class adminAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get
        {
            return "admin";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "admin_default",
            "admin/{controller}/{action}/{id}",
            new { action = "Index", id = UrlParameter.Optional }
        );
    }
}

全球阿萨克斯:

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        AuthConfig.RegisterAuth();

        System.Data.Entity.Database.SetInitializer(new System.Data.Entity.DropCreateDatabaseIfModelChanges<DataContext>());
    }
}
4

1 回答 1

0

在您的应用程序中为您的管理区域和主路由注册路由时,您需要指定命名空间。

主要路线:

    routes.MapRoute(
        "Default",
        "{controller}/{action}/{id}",
        new { controller = "Home", action = "Index", id = UrlParameter.Optional },
        new string[] { "RedPlanet.Controllers" }// specify the namespace
);

在您的 \Areas\admin\adminAreaRegistration.cs 文件中,您需要修改 RegisterArea() 方法,如下所示:

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "admin_default",
        "admin/{controller}/{action}/{id}",
        new { action = "Index", id = UrlParameter.Optional },
        new[] { "RedPlanet.Areas.admin.Controllers" }// specify the namespace
    );
}

更新:
如果您使用的是 Guid,则应将操作方法​​的参数类型更改为 Guid:

public ActionResult Details(Guid guid)
{
    //code
    return View(model); 
}

然后为此创建新路线;

routes.MapRoute("FooRouteName",
        "Controller/Action/{guidParam}",
         new { controller = "Category", action = "Index" },
         new { guidParam = @"^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$" }
    );
于 2013-10-03T04:07:53.530 回答