在ASP.NET 4.6和ASP.NET Core之间,路由的实现方式有一些差异。下面是一些解决方法,包含代码示例:
路由配置方式的差异:
RouteConfig
类配置路由。// Global.asax.cs
protected void Application_Start()
{
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
// RouteConfig.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute("default", "{controller}/{action}/{id}", "~/Default.aspx");
}
UseEndpoints
方法配置路由。public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller}/{action}/{id?}",
defaults: new { controller = "Home", action = "Index" });
});
}
控制器和动作方法的差异:
System.Web.Mvc.Controller
,并使用ActionResult
作为方法的返回类型。// HomeController.cs
public class HomeController : Controller
{
public ActionResult Index()
{
// 返回视图
return View();
}
}
Microsoft.AspNetCore.Mvc.ControllerBase
,并使用特定的返回类型,如IActionResult
或具体的视图结果类型。// HomeController.cs
public class HomeController : ControllerBase
{
public IActionResult Index()
{
// 返回视图
return View();
}
}
路由参数的差异:
[Route]
、[HttpGet]
等)来定义路由参数。// HomeController.cs
public class HomeController : Controller
{
[HttpGet]
[Route("products/{id}")]
public ActionResult Details(int id)
{
// 根据id获取产品详情
return View();
}
}
// HomeController.cs
public class HomeController : ControllerBase
{
[HttpGet("products/{id}")]
public IActionResult Details(int id)
{
// 根据id获取产品详情
return View();
}
}
以上是ASP.NET 4.6和ASP.NET Core之间路由差异的解决方法,包含了代码示例。请根据你的具体情况选择适合的方法进行路由配置和参数定义。