如何摆脱 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如何使用?

如何使用 Asp.net MVC 从页面引用位于视图文件夹中的 .js 文件

如何在 ASP.NET MVC 中的 URL 之后允许额外的文本?

IIS 7.5 中的 Asp.net mvc 4 应用程序问题

将模型传递给 ASP.NET Core MVC 中的视图

如何在 ASP.NET MVC 中使用 asp-controller 或 asp-action 访问我的 url 中的多个层