gpt4 book ai didi

asp.net-mvc-3 - MVC 3 Controller Action 不工作

转载 作者:行者123 更新时间:2023-12-01 11:05:28 25 4
gpt4 key购买 nike

我在 asp.net MVC3 中有工作应用程序。今天,当我在 VS2010 中处理它时,我发现特定 Controller 的任何 Action 都没有触发。在浏览 Controller /操作时,我收到页面未找到消息。我检查了所有页面是否存在( Controller 、 View )。即使我向该 Controller 添加新操作,它也根本不会被调用。同时,来自其他 Controller 的操作运行良好。我可以访问页面。这很奇怪,我无法弄清楚。有帮助吗?

编辑:

不工作的 Controller 操作是 http://localhost:7400/Registration/MedicalHistory/0

来自 global.asax 的代码

 public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

// Home and error page
routes.MapRoute("error", "error", new { controller = "Home", action = "Error" });

//Default routing
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Program", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new string[] { "ASPNETMVCApplication.Controllers" }
);

//Admin routing
routes.MapRoute(
"Admin", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Program", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new string[] { "ASPNETMVCApplication.Areas.Admin.Controllers" }
);
}

病史操作:

   [HttpGet]
public ActionResult MedicalHistory(int id = 0)
{
//some code
return View()
}

最佳答案

首先,您似乎错误地设置了管理区域。要添加一个区域,您应该在 MVC 项目的根目录中有一个文件夹结构 Areas/{您所在区域的名称},例如Areas/Admin,其中包含所有常用的 Controllers、Views 文件夹。

在那里你应该创建一个继承 AreaRegistration 并至少实现 AreaName 属性和 RegisterArea() 方法的类。

在 Global.asax.cs 的 Application_Start() 处理程序中,第一行应该是 AreaRegistration.RegisterAllAreas();。

同样值得添加 RouteDebug到您的应用程序并添加您在 Application_Start() 中使用的 web.config 开关,以打开或关闭路由调试。当您的路由行为不当或未获得您期望的操作参数时,这绝对是无价的。

关于asp.net-mvc-3 - MVC 3 Controller Action 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6304438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com