ASP.NET MVC 4 路由匹配,但控制器从不调用
本文关键字:控制器 调用 MVC NET 路由 ASP | 更新日期: 2023-09-27 18:33:19
我一直在为VS 2010中的新 ASP.NET MVC 4项目而苦苦挣扎。我有一个非常基本的设置,包括单个控制器(SiteController
),单个路由({action}
)和单个视图(Views/Site/Default.cshtml
)。出于某种原因,我无法让它显示视图,即使路由根据 RouteDebugger 匹配,我得到的只是 404 错误。我以为是卡西尼是个混蛋,所以我安装了IIS 7,但它仍然无法正常工作。以下是相关代码:
站点控制器
/// Note: BaseController is in a different assembly I use to extend MVC and it works fine because I use it in a dozen other projects.
public class SiteController : BaseController {
public ActionResult Default() {
return base.View();
}
}
路由配置
public class RouteConfig {
public static void RegisterRoutes(
/// http(s)://{host}/{action}
routes.MapRoute("6354af93-f979-44a4-ba9b-cc8ab775edf6", "{action}", new {
action = "Default",
controller = "Site"
});
/// http(s)://{host}/{*any}
routes.MapRoute("04b41915-4455-4c11-96c2-38e6aedf929f", "{*any}", new {
action = "Default",
controller = "Site"
});
}
}
以下是项目的文件夹结构:
App_Start
BundlesConfig.cs
FilterConfig.cs
NinjectWebCommon.cs
RouteConfig.cs
Controllers
SiteController.cs
Models
Views
Shared
_Site.cshtml
Site
Default.cshtml
Web.config
Global.asax
packages.config
Web.Config
事实证明,我的BaseController
类导致了 404 错误。不知道为什么,也必须检查该项目,但现在我已经恢复了默认从Controller
继承SiteController
。
更新
在过去的几个小时里,我重新构建了一个 .NET 扩展解决方案,其中包含我上面引用的BaseController
。我使用 v4 程序集重新定位它,并能够将其重新插入。所以,我想我使用引用 v3 程序集的扩展是有错的。
如果您的想法用
完了,我会建议用于调试问题的步骤......
- 使用 vs2012 项目模板在计算机上设置一个空的默认 MVC 项目,运行它并确保一切正常
- 添加基本控制器并在项目模板的 DefaultController 中使用它,并确保默认控制器仍然有效。
- 将默认路由替换为自定义路由,并确保默认路由仍然有效
- 将 _site.cshtml 添加到默认值,并确保它仍然有效。 添加站点控制器
- 并更改路由以路由到该站点控制器