是否有可能从URL中删除文件夹,以便domain.com/mvc/page/成为domain.com/page/?是否可以从ASP.NET MVC中的URL中删除文件夹?
这是在Windows Server 2012上运行的IIS 7.5的ASP.NET 4.5 MVC应用程序
编辑:
/MVC /是包含MVC Web应用程序的文件夹,在URL域.COM/MVC /页/不管/其它/
是否有可能从URL中删除文件夹,以便domain.com/mvc/page/成为domain.com/page/?是否可以从ASP.NET MVC中的URL中删除文件夹?
这是在Windows Server 2012上运行的IIS 7.5的ASP.NET 4.5 MVC应用程序
编辑:
/MVC /是包含MVC Web应用程序的文件夹,在URL域.COM/MVC /页/不管/其它/
问我记得在MVC URL不依赖于文件夹结构,但对控制和路由。(属性路由)
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
。请检查这个链接。 ASP.NET MVC Routing Overview (C#)。我想你可以在那里找到更多的解释。 对于一个链接,您可以使用属性
[Route("orders/{id:int}/{orderCode?}")]
public async Task<ActionResult> Order(int id, string orderCode = "")
{
////
}
是否有可能在ASP.NET MVC的URL删除文件夹?
号
MVC不使用文件和文件夹来承载其终点 - 它使用的控制器和行动。因此,从URL中删除“文件夹”是不可能的,因为URL中没有文件夹。
但是,MVC使用.NET路由,它允许您配置您的URL看看你想要的。因此,要根据您的示例制作匹配/page
的路线,您需要插入路线以将该网址与您的RouteConfig.cs
文件相匹配。
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// Route to domain.com/page that calls an action named Page on the HomeController
routes.MapRoute(
name: "PageRoute",
url: "page",
defaults: new { controller = "Home", action = "Page" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
对不起,我应该让我的问题更清楚一点,即/ mvc /是包含MVC应用程序的文件夹。 RouteConfig.cs可以查看和路由/ mvc/URL部分吗?我认为它只能在/ mvc/...中路由URL,如果这是有道理的。 – Organic
最简单的解决方案是删除该文件夹并将该应用程序托管在网站的根目录中或[通过IIS移动网站的根目录](https://forums.iis.net/t/1207046.aspx)。但是如果情况决定你必须保留子目录,你可以使用[IIS URL重写模块](http://www.iis.net/downloads/microsoft/url-rewrite)[将根目录重写到子目录]( http://forums.asp.net/t/1479881.aspx?URL+Rewriting+the+root+folder+to+a+subfolder)。这不是您应该尝试在应用程序内部解决的问题,因为它完全存在于外部。 – NightOwl888
网站的根目录是一个webforms网站。作为概念证明,我已经尝试将mvc应用程序组合到web.config文件中,将mvc .dll复制到根bin文件夹并将Views文件夹复制到根目录,从而将mvc应用程序移动到网站的根目录。尝试加载mvc网址时出现404错误。 – Organic