asp.net-mvc - ASPNET MVC 自定义路由失败,返回 "No type was found that matches the controller named ' Home'。”

标签 asp.net-mvc routing

我正在尝试创建一个自定义路由来处理具有多个参数的特定 url。我向 global.asax 添加了一个新的新路由定义,但是当我尝试导航到该操作时,我收到错误消息“找不到与名为“Home”的 Controller 匹配的类型。

谁能告诉我我哪里出错了?

全局.asax:

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

  routes.MapHttpRoute(
      name: "HomeDetails",
      routeTemplate: "Home/Detail/{articleId}/{articleVersion}",
      defaults: new { controller = "Home", action = "Detail", articleId = "0", articleVersion = "0.0" }
  );

  //routes.MapHttpRoute(
  //    name: "DefaultApi",
  //    routeTemplate: "api/{controller}/{id}",
  //    defaults: new { id = RouteParameter.Optional }
  //);

  routes.MapRoute(
      name: "Default",
      url: "{controller}/{action}/{id}",
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
  );
}

Controller :
public class HomeController : Controller
{

  public ViewResult Index()
  {
    return View();
  }

  public ViewResult Detail(int articleId, decimal articleVersion)
  {
  // does stuff here...
  return View(model);
  }

}

我试图点击的网址类似于 http://localhost/home/detail/1234/1.2

最佳答案

MapHttpRoute路由到继承 ApiController 的 Web API Controller .

在您的示例中 HomeController 继承了标准 Controller (不是 ApiController),你需要使用 MapRoute而是要找到 Controller :

routes.MapRoute(
  name: "HomeDetails",
  url: "Home/Detail/{articleId}/{articleVersion}",
  defaults: new { controller = "Home", action = "Detail", articleId = 0, articleVersion = 0.0 }
);

关于asp.net-mvc - ASPNET MVC 自定义路由失败,返回 "No type was found that matches the controller named ' Home'。”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10847663/

相关文章:

amazon-web-services - 如何使用 Terraform 在 Amazon VPC 中创建通配符 dns 记录以指向服务发现服务器?

asp.net-mvc - 调用 WCF 服务的被动 Web 应用程序

asp.net-mvc - Web Api 性能优于 MVC

asp.net-mvc - 任何人都知道我们如何使用 nuget 中的这个 EmbeddedResourceVirtualPathProvider 包?

ruby-on-rails - rails : how to set json format for redirect_to

php - 基于 MVC 基础的动态路由 - i18n 和 l10n

c# - EditorFor() 可以用来创建 <input type ="file"> 吗?

c# - DTO vs VM - 使用还是不使用?

routing - AngularJS - 如何只更改一个 routeParam 并重定向?

node.js - 如何在sails中创建全局路由前缀?