Nic*_*ick 6 asp.net-mvc routing
我正在尝试创建一个自定义路由来处理具有多个参数的特定网址.我已经向global.asax添加了一个新的新路由定义,但是当我尝试导航到该操作时,我收到错误消息"找不到与名为'Home'的控制器匹配的类型."
谁能告诉我哪里出错了?
Global.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 }
);
}
Run Code Online (Sandbox Code Playgroud)
控制器:
public class HomeController : Controller
{
public ViewResult Index()
{
return View();
}
public ViewResult Detail(int articleId, decimal articleVersion)
{
// does stuff here...
return View(model);
}
}
Run Code Online (Sandbox Code Playgroud)
我试图击中的网址就像是 http://localhost/home/detail/1234/1.2
pju*_*ble 21
MapHttpRoute路由到继承的Web API控制器ApiController.
在您的示例中,HomeController继承了标准Controller(而不是ApiController),您需要使用它MapRoute来代替控制器:
routes.MapRoute(
name: "HomeDetails",
url: "Home/Detail/{articleId}/{articleVersion}",
defaults: new { controller = "Home", action = "Detail", articleId = 0, articleVersion = 0.0 }
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4915 次 |
| 最近记录: |