Asp.net mvc ASP MVC程序,从uri中删除/区域/前缀

Asp.net mvc ASP MVC程序,从uri中删除/区域/前缀,asp.net-mvc,single-page-application,asp.net-mvc-areas,Asp.net Mvc,Single Page Application,Asp.net Mvc Areas,默认情况下,区域具有/区域/布线前缀。例如,博客区域将是: /Areas/Blog/Blog/Show/myId 或 结果是web应用程序的uri非常难看且冗余。我想要的东西大致如下: /Blog/Show/myId 或 我怎样才能做到这一点 我之所以使用区域,是因为我的“博客”区域不是一个标准的MVC应用程序,而是一个单页应用程序。它的项目结构与应用程序的其他部分不同,因此,我只想将其划分为自己的区域 编辑:区域注册的源 编辑路由的源 编辑 在与/u/Eric Philips交谈后,我想出

默认情况下,区域具有/区域/布线前缀。例如,博客区域将是:

/Areas/Blog/Blog/Show/myId

结果是web应用程序的uri非常难看且冗余。我想要的东西大致如下:

/Blog/Show/myId

我怎样才能做到这一点

我之所以使用区域,是因为我的“博客”区域不是一个标准的MVC应用程序,而是一个单页应用程序。它的项目结构与应用程序的其他部分不同,因此,我只想将其划分为自己的区域

编辑:区域注册的源

编辑路由的源

编辑

在与/u/Eric Philips交谈后,我想出了一个解决方案。解决方案是将我的文件结构修改为与MVC兼容。设置控制器并将index.cshtml页面移动到有效位置后,/Blog/工作正常

  public class BlogController : Controller
{
    // GET: Blog/Blog
    public ActionResult Index()
    {
        return View();
    }
}

我很困惑。区域是MVC特定的。然后你说你不想要一个非mvc应用程序的区域前缀。那么,MVC项目中的各个方面与非MVC应用程序有什么关系呢?只有一个项目。该项目是一个支持SinglePageApplications的MVC应用程序。SPA区域包含大约5个cshtml页面,没有控制器。它的结构不同于应用程序的其他部分,因此,我觉得有必要将此代码放在一个区域中。这是在该地区刚刚好,但是,我有这个丑陋的冗余路由路径,我必须使用。如果我能帮忙的话,我不想使用Area这个词。实际上,我从来没有见过/Areas/当我在MVC应用程序版本3和5中创建一个区域时,该区域的名称是没有/Areas/ie的前缀,这里的blog区域应该是/blog/{controller}/{action}.MVC5/领域/博客/作品/Blog/没有。我不知道,您完全没有提供任何代码。
/{area / controller}/{action}/{id}
public class BlogAreaRegistration : AreaRegistration 
{
    public override string AreaName 
    {
        get 
        {
            return "Blog";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context) 
    {
        context.MapRoute(
            "Blog_default",
            "Blog/{action}/{id}",
            new { controller ="blog", action = "Index", id = UrlParameter.Optional }
        );
    }
}
 routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
  public class BlogController : Controller
{
    // GET: Blog/Blog
    public ActionResult Index()
    {
        return View();
    }
}