ASP.NET Web App(.NET Framework4.6.1)视图跳转404错误求助
ASP.NET Web App (.NET Framework 4.6.1) 视图404错误排查方案
1. 视图文件结构与路径校验
- 确认
.cshtml文件放置路径:CategoryController对应的视图必须放在~/Views/Category/目录下,GetCategoryList.cshtml需严格位于该路径内。 - 调用视图的路径写法:
- 同控制器下直接返回
View("GetCategoryList")即可,框架会自动匹配对应目录文件; - 跨控制器调用需使用完整路径,如
View("~/Views/OtherController/TargetView.cshtml"),注意必须包含波浪线~开头的完整虚拟路径。
- 同控制器下直接返回
2. 控制器与路由配置检查
- 路由规则验证:确保
RouteConfig.cs默认路由配置正确,无语法错误:
public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } }
- 控制器规范:
CategoryController类名必须以Controller结尾,且继承自System.Web.Mvc.Controller基类。 - 访问URL规则:禁止直接访问
.cshtml文件,需通过路由访问,如http://localhost:端口号/Category/GetCategoryList。
3. Web.config配置验证
- Views目录下的Web.config:确认
system.web.webPages.razor节点配置正确,MVC版本需与项目引用匹配(以5.2.3.0为例):
<system.web.webPages.razor> <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Optimization"/> <add namespace="System.Web.Routing" /> </namespaces> </pages> </system.web.webPages.razor>
- 根目录Web.config:检查MVC程序集引用版本一致性:
<assemblies> <add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> </assemblies>
4. 编译与缓存清理
- 清理项目的
bin和obj目录,重新生成解决方案; - 关闭IIS Express(或本地IIS服务),重启项目后再测试;
- 排查是否存在自定义路由规则覆盖默认路由,导致请求无法匹配到目标Action。
5. Action方法返回值校验
确保CategoryController中的GetCategoryList方法返回正确的视图类型:
public ActionResult GetCategoryList() { // 业务逻辑代码 return View(); // 或明确指定视图名 return View("GetCategoryList"); }
禁止返回ContentResult等非视图类型(除非业务明确需要)。
内容的提问来源于stack exchange,提问作者Cevdet Berkay Sarıalioğlu
相关产品推荐
相关产品推荐

