網(wǎng)站首頁 編程語言 正文
相關(guān)文章
ASP.NET Core中MVC模式實現(xiàn)路由一
ASP.NET Core中MVC模式實現(xiàn)路由二
1.URL生成
MVC應(yīng)用程序可以使用路由的URL生成功能,生成指向操作(Action)的URL鏈接。 IUrlHelper 接口用于生成URL,是MVC與路由之間的基礎(chǔ)部分。在控制器、視圖和視圖組件中,可通過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 }); } }
響應(yīng)結(jié)果:
如果Url.Action方法都只設(shè)置Action名稱,那么IUrlHelper接口會獲取通過指向當(dāng)前所在控制器里存在的Action操作,然后生成URL。如果當(dāng)前控制器里Action操作自定義路由模版,則會生成對應(yīng)路由模版URL。如果Action不存在當(dāng)前控制器里,則會生成空字符串的URL。
2.URL生成方式
2.1根據(jù)操作名稱生成URL
Url.Action (IUrlHelper. Action) 可以通過指定控制器(Controller)名稱和操作(Action)名稱來生成要鏈接的內(nèi)容。而重載方法里還包含添加路由值對象,比如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根據(jù)路由生成URL
上面的代碼演示了如何通過傳入控制器和操作名稱來生成URL。IUrlHelper還提供 Url.RouteUrl系列的方法。這些方法類似于Url.Action,但它們不會將action和controller的當(dāng)前值復(fù)制到路由值。最常見的用法是指定一個路由名稱,以使用特定路由來生成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,可分別生成
原文鏈接:https://www.cnblogs.com/wzk153/p/10996179.html
相關(guān)推薦
- 2022-11-15 Rust使用kind進(jìn)行異常處理(錯誤的分類與傳遞)_相關(guān)技巧
- 2022-04-11 python制作簡單計算器功能_python
- 2023-04-03 Golang?filepath包常用函數(shù)詳解_Golang
- 2023-01-29 Python?第三方庫?openpyxl?的安裝過程_python
- 2024-01-12 Springboot測試類中 @Before與@BeforeEach的區(qū)別
- 2022-08-22 Python連接數(shù)據(jù)庫使用matplotlib畫柱形圖_python
- 2022-04-19 提高css性能的優(yōu)化方法有哪些
- 2022-09-18 面試必問Linux?命令su和sudo的區(qū)別解析_linux shell
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支