ASP.NET Core中MVC模式怎么实现路由
这篇"ASP.NET Core中MVC模式怎么实现路由"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"ASP.NET Core中MVC模式怎么实现路由"文章吧。
1.URL生成
MVC应用程序可以使用路由的URL生成功能,生成指向操作(Action)的URL链接。 IUrlHelper 接口用于生成URL,是MVC与路由之间的基础部分。在控制器、视图和视图组件中,可通过Url属性找到IUrlHelper的实例。在此示例中,将通过Controller.Url属性使用IUrlHelper接口来生成指向另一项操作的URL。
public class HomeController : Controller{ public IActionResult Index() { var url1= Url.Action("Privacy");//Url:Home/Privacy var url2 = Url.Action("Error");//Url:Home/Error var url3 = Url.Action("Article");//Url:Blog/Article var msg = $"url1: {url1}"; msg += $"\r\nurl2: {url2}"; msg += $"\r\nurl3: {url3}"; return Content(msg); } [HttpGet("custom/url/to/privacy")]//定义一个路由模版 public IActionResult Privacy() { return View(); } public IActionResult Error(string code) { return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); }}
响应结果:
如果Url.Action方法都只设置Action名称,那么IUrlHelper接口会获取通过指向当前所在控制器里存在的Action操作,然后生成URL。如果当前控制器里Action操作自定义路由模版,则会生成对应路由模版URL。如果Action不存在当前控制器里,则会生成空字符串的URL。
2.URL生成方式
2.1根据操作名称生成URL
Url.Action (IUrlHelper. Action) 可以通过指定控制器(Controller)名称和操作(Action)名称来生成要链接的内容。而重载方法里还包含添加路由值对象,比如Url.Action("Home", "Index", new { id = 17 }),此处路由值对象就是new { id = 17 }(路由值对象通常是匿名类型的对象)。下面我们通过示例来看看:
public class HomeController : Controller{ public IActionResult Index(int id) { var url = Url.Action("Index", "Home", new { id = 17, color = "red", sex = "m" }); return View(); }}
通过DEBUG查看生成URL:
2.2根据路由生成URL
上面的代码演示了如何通过传入控制器和操作名称来生成URL。IUrlHelper还提供 Url.RouteUrl系列的方法。这些方法类似于Url.Action,但它们不会将action和controller的当前值复制到路由值。最常见的用法是指定一个路由名称,以使用特定路由来生成URL,通常不指定控制器或操作名称。
public class HomeController : Controller{ public IActionResult Index(int id) { var url = Url.RouteUrl("Privacy_Name"); return View(); } [HttpGet("custom/url/to/privacy",Name = "Privacy_Name")]//定义一个路由模版 public IActionResult Privacy() { return View(); }}
通过DEBUG查看生成URL:
2.3在HTML中生成URL
IHtmlHelper提供HtmlHelper方法Html.BeginForm和Html.ActionLink,可分别生成