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