ASP.NET Core MVC解決控制器同名Action請求不明確的問題
在Asp.Net Core MVC Web應用程序的開發(fā)過程當中,如果需要在控制器內使用同名的Action,則會出現(xià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謂詞特性路由模板配置解決請求Action不明確的問題 //AmbiguousMatchException: The request matched multiple endpoints. Matches: //[Controller]/[ActionName]/[Parameters] //中文字符串需要編碼 //type為可解析為int類型的數(shù)字字符串 string str = HtmlEncoder.Default.Encode($"Hello {name}, Type is: {type}"); return str; }`
只要在瀏覽器的Url地址欄輸入"/HelloWorld/Welcome"這個路由地址段時,Asp.Net Core的路由解析中間件便拋出上圖所示的請求操作不明確的問題。
根據(jù)官方文檔的描述,可以在控制器內某一個同名的Action方法上添加HTTP Verb Attribute特性的方式(為此方法重新聲明一個路由Url片段)來解決此問題。對HelloWorld控制器內,具有參數(shù)的"Welcome"這個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; }
請求Url: Get -> "/HelloWorld/Welcome?name=xxxxx&type=0"
到此這篇關于ASP.NET Core MVC解決控制器同名Action請求不明確的問題的文章就介紹到這了,更多相關ASP.NET Core MVC控制器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
ASP.NET Core使用GraphQL第一章之Hello World
這篇文章主要給大家介紹了關于ASP.NET Core使用GraphQL第一章之Hello World的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-11-11Asp.Net Core MVC項目實現(xiàn)多語言實例(Globalization/Localization)
本篇文章主要介紹了Asp.Net Core MVC項目實現(xiàn)多語言實例(Globalization/Localization) ,具有一定的參考價值,有興趣的可以了解一下2017-06-06ASP.NET中GridView 重復表格列合并的實現(xiàn)方法
本文通過GridView 和 Repeater 解決有關表格顯示數(shù)據(jù)重復的數(shù)據(jù)列和并的方法,非常實用,感興趣的朋友一起看下吧2016-08-08asp.net在iframe中彈出信息并執(zhí)行跳轉問題探討
本代碼將實現(xiàn)在iframe中彈出信息并執(zhí)行跳轉,感興趣的朋友可以參考下2013-04-04通過剪貼板實現(xiàn)將DataGridView中的數(shù)據(jù)導出到Excel
這篇文章主要介紹了如何通過剪貼板實現(xiàn)將DataGridView中的數(shù)據(jù)導出到Excel,需要的朋友可以參考下2014-05-05