ASP.NET Core MVC解決控制器同名Action請(qǐng)求不明確的問(wèn)題
在Asp.Net Core MVC Web應(yīng)用程序的開(kāi)發(fā)過(guò)程當(dāng)中,如果需要在控制器內(nèi)使用同名的Action,則會(huì)出現(xiàn)如下圖所示的問(wèn)題:
https://docs.microsoft.com/zh-cn/aspnet/core/mvc/controllers/routing?view=aspnetcore-5.0
代碼片段如下:
` //GET: /HelloWorld/Welcome public string Welcome() { return "這是HelloWorld控制器下的Welcome Action方法....."; }
//帶參數(shù)的Action //GET: /HelloWorld/Welcome?name=xxxx&type=xxx public string Welcome(string name, int type) { //使用Http Verb謂詞特性路由模板配置解決請(qǐng)求Action不明確的問(wèn)題 //AmbiguousMatchException: The request matched multiple endpoints. Matches: //[Controller]/[ActionName]/[Parameters] //中文字符串需要編碼 //type為可解析為int類(lèi)型的數(shù)字字符串 string str = HtmlEncoder.Default.Encode($"Hello {name}, Type is: {type}"); return str; }`
只要在瀏覽器的Url地址欄輸入"/HelloWorld/Welcome"這個(gè)路由地址段時(shí),Asp.Net Core的路由解析中間件便拋出上圖所示的請(qǐng)求操作不明確的問(wèn)題。
根據(jù)官方文檔的描述,可以在控制器內(nèi)某一個(gè)同名的Action方法上添加HTTP Verb Attribute特性的方式(為此方法重新聲明一個(gè)路由Url片段)來(lái)解決此問(wèn)題。對(duì)HelloWorld控制器內(nèi),具有參數(shù)的"Welcome"這個(gè)Action添加HTTPGetAttr
修改后的代碼如下:
//帶參數(shù)的Action //GET: /HelloWorld/Welcome?name=xxxx&type=xxx [HttpGet(template:"{controller}/WelcomeP", Name = "WelcomeP")] public string Welcome(string name, int type) { string str = HtmlEncoder.Default.Encode($"Hello {name}, Type is: {type}"); return str; }
請(qǐng)求Url: Get -> "/HelloWorld/Welcome?name=xxxxx&type=0"
到此這篇關(guān)于ASP.NET Core MVC解決控制器同名Action請(qǐng)求不明確的問(wèn)題的文章就介紹到這了,更多相關(guān)ASP.NET Core MVC控制器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ASP.NET Core使用GraphQL第一章之Hello World
這篇文章主要給大家介紹了關(guān)于ASP.NET Core使用GraphQL第一章之Hello World的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11三種方法讓Response.Redirect在新窗口打開(kāi)
通過(guò)設(shè)置form的target屬性同樣可以讓Response.Rederect所指向的url在新的窗口打開(kāi),下面為大家介紹三種具體的實(shí)現(xiàn)方法2013-10-10Asp.Net Core MVC項(xiàng)目實(shí)現(xiàn)多語(yǔ)言實(shí)例(Globalization/Localization)
本篇文章主要介紹了Asp.Net Core MVC項(xiàng)目實(shí)現(xiàn)多語(yǔ)言實(shí)例(Globalization/Localization) ,具有一定的參考價(jià)值,有興趣的可以了解一下2017-06-06ASP.NET中GridView 重復(fù)表格列合并的實(shí)現(xiàn)方法
本文通過(guò)GridView 和 Repeater 解決有關(guān)表格顯示數(shù)據(jù)重復(fù)的數(shù)據(jù)列和并的方法,非常實(shí)用,感興趣的朋友一起看下吧2016-08-08asp.net在iframe中彈出信息并執(zhí)行跳轉(zhuǎn)問(wèn)題探討
本代碼將實(shí)現(xiàn)在iframe中彈出信息并執(zhí)行跳轉(zhuǎn),感興趣的朋友可以參考下2013-04-04基于.NET中建構(gòu)子中傳遞子對(duì)象的對(duì)象詳解
本篇文章介紹了,基于.NET中建構(gòu)子中傳遞子對(duì)象的對(duì)象詳解。需要的朋友參考下2013-05-05通過(guò)剪貼板實(shí)現(xiàn)將DataGridView中的數(shù)據(jù)導(dǎo)出到Excel
這篇文章主要介紹了如何通過(guò)剪貼板實(shí)現(xiàn)將DataGridView中的數(shù)據(jù)導(dǎo)出到Excel,需要的朋友可以參考下2014-05-05不可忽視的 .NET 應(yīng)用5大性能問(wèn)題
ASP.NET 或是 Windows Forms 容器中,使用 ADO 庫(kù)與運(yùn)行在 CLR 交互,而 CLR 運(yùn)行在操作系統(tǒng)中而該硬件又與其他包含不同技術(shù)堆棧的硬件通過(guò)網(wǎng)絡(luò)相連。在你的應(yīng)用與外部環(huán)境之間,。我們還有 API 管理服務(wù)以及多級(jí)緩存基礎(chǔ)構(gòu)造數(shù)量龐雜,都可能影響應(yīng)用程序的性能!2016-05-05