如何摆脱 ASP.Net MVC 中的 Home?
Posted
技术标签:
【中文标题】如何摆脱 ASP.Net MVC 中的 Home?【英文标题】:How do I get rid of Home in ASP.Net MVC? 【发布时间】:2010-09-06 03:21:45 【问题描述】:我知道这个网站是使用 ASP.Net MVC 编写的,我在 url 中看不到“/Home”。这向我证明这是可以做到的。我需要什么特别的路线?
【问题讨论】:
【参考方案1】:只需将“Home”更改为空字符串即可。
routes.MapRoute(
"Home",
"",
new action = Index, controller = Home
);
【讨论】:
【参考方案2】:如果您在 IIS 7 上运行,您可以简单地删除 ASP.NET MVC 附带的 Default.aspx 文件(假设您在 Preview 3 或更高版本上运行)。由于在 .NET 3.5 SP1 中修复的 Cassini 问题,需要该文件。更多详情请查看:
http://haacked.com/archive/2008/04/10/upcoming-changes-in-routing.aspx 和 http://haacked.com/archive/2008/05/12/sp1-beta-and-its-effect-on-mvc.aspx
【讨论】:
【参考方案3】:我实际上喜欢将我所有的家庭控制器方法都放在网站的根目录下。像这样:/about、/contact 等。我想我很挑剔。我使用一个简单的路线约束来做到这一点。 Here is my blog post with a code sample.
【讨论】:
【参考方案4】:在 IIS 7 中,您可以简单地删除 ASP.NET MVC 附带的 Default.aspx 文件(假设您在 Preview 3 或更高版本上运行)。由于在 .NET 3.5 SP1 中修复的 Cassini 问题,需要该文件。
更多详情请查看:
Upcoming Changes In Routing 和 .NET 3.5 SP1 Beta and Its Effect on MVC
【讨论】:
【参考方案5】:我会添加
routes.MapRoute("NoIndex", "action", new controller = "Home", action = "Index" );
在 RouteConfig.cs 中
【讨论】:
【参考方案6】:这就是我为摆脱 Home 所做的。它会将只有一个说明符的所有路由视为 Home/Action,将任何带有两个说明符的路由视为 Controller/Action。缺点是控制器现在必须有一个明确的索引(/Controller != /Controller/Index),但它可能会对您或其他人有所帮助。
routes.MapRoute(
"Default",
"action",
new controller = "Home", action = "Index"
);
routes.MapRoute(
"Actions",
"controller/action",
new
);
【讨论】:
以上是关于如何摆脱 ASP.Net MVC 中的 Home?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Asp.net MVC 从页面引用位于视图文件夹中的 .js 文件
如何在 ASP.NET MVC 中的 URL 之后允许额外的文本?
IIS 7.5 中的 Asp.net mvc 4 应用程序问题
如何在 ASP.NET MVC 中使用 asp-controller 或 asp-action 访问我的 url 中的多个层