在ASP.NET MVC 5中,控制器路由映射和嵌套操作的正确方法如下所示:
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
// 注册路由配置
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
}
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 }
);
// 自定义路由配置
routes.MapRoute(
name: "Custom",
url: "Custom/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
[RoutePrefix("api/users")]
public class UserController : ApiController
{
// GET api/users
[Route("")]
public IEnumerable GetUsers()
{
// 返回所有用户
}
// GET api/users/{id}
[Route("{id:int}")]
public User GetUserById(int id)
{
// 根据ID返回用户
}
// POST api/users
[Route("")]
public IHttpActionResult CreateUser(User user)
{
// 创建新用户
}
}
[RoutePrefix("api/users")]
public class UserController : ApiController
{
// ...
}
[Route("api/users/{id:int}")]
public IHttpActionResult GetUserById(int id)
{
// ...
}
注意:在使用这种方式定义路由映射时,需要将WebApiConfig.cs文件中的默认路由配置注释掉,以避免冲突。
通过以上步骤,你可以正确地定义ASP.NET MVC 5控制器的路由映射和嵌套操作。