日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何在ASP.NETCoreMVC5中處理未知的Action

本文轉(zhuǎn)載自微信公眾號「碼農(nóng)讀書」,作者碼農(nóng)讀書。轉(zhuǎn)載本文請聯(lián)系碼農(nóng)讀書公眾號。

成都創(chuàng)新互聯(lián)公司為您提適合企業(yè)的網(wǎng)站設(shè)計?讓您的網(wǎng)站在搜索引擎具有高度排名,讓您的網(wǎng)站具備超強(qiáng)的網(wǎng)絡(luò)競爭力!結(jié)合企業(yè)自身,進(jìn)行網(wǎng)站設(shè)計及把握,最后結(jié)合企業(yè)文化和具體宗旨等,才能創(chuàng)作出一份性化解決方案。從網(wǎng)站策劃到成都做網(wǎng)站、網(wǎng)站建設(shè), 我們的網(wǎng)頁設(shè)計師為您提供的解決方案。

ASP.NET Core MVC 5 是一個輕量級,開源的,利于單元測試的基于 ASP.NET Core 運(yùn)行時的 web 框架,在開發(fā)時你肯定會遇到不少那些 request 無法匹配 Action 的情況,通常做法是拋出 404,但有些場景下我希望能收口到統(tǒng)一一個 Action 去執(zhí)行,這篇文章我們將會討論如何去處理那些未知 Action 的收口。

創(chuàng)建 Controller

現(xiàn)在我們創(chuàng)建一個 AuthorController 類,如下代碼所示:

 
 
 
 
  1. public class AuthorController : Controller 
  2.   { 
  3.       [HttpGet] 
  4.       public ActionResult Index() 
  5.       { 
  6.           return View(); 
  7.       } 
  8.   } 

未知 Action 的問題

先拋出問題,然后再來看一下怎么解決,假設(shè)現(xiàn)在在做一個 圖書搜索系統(tǒng),你希望用戶可以根據(jù) 作者名,書名,文章標(biāo)題 等條件去查詢圖書信息,首先你需要知道目錄所包含的所有作者,書籍,文章的詳細(xì)信息,那么這個需求怎么實現(xiàn)呢?

為了實現(xiàn)需求,我肯定會先在 Views 文件夾下新增對應(yīng)的 view 文件,比如 Authors.cshtml, Books.cshtml, Articles.cshtml,方便用戶查詢時導(dǎo)向各自的 view ,比如下面的請求。

 
 
 
 
  1. /Author/Books 
  2.  
  3. /Author/Articles 

顯而易見下面的 url 它可以非常利索的導(dǎo)向 AuthorController 下的 Index 方法。

 
 
 
 
  1. /Author/Index 

回過頭來,如果你在瀏覽器中輸入如下兩個url,這時候肯定會拋異常,很顯然 AuthorControler 下并沒有所謂的 Books 和 Articles 這兩個 Action 方法。

 
 
 
 
  1. /Author/Books 
  2. /Author/Articles 

使用 routing 處理未知 Action

那如何對這些未知 Action 進(jìn)行收口呢?可以使用 Routing 機(jī)制來解決此類問題,如下代碼所示:

 
 
 
 
  1. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) 
  2.        { 
  3.            app.UseStaticFiles(); 
  4.  
  5.            app.UseRouting(); 
  6.  
  7.            app.UseAuthorization(); 
  8.  
  9.            app.UseEndpoints(endpoints => 
  10.            { 
  11.                endpoints.MapControllerRoute( 
  12.                         name: "viewName", 
  13.                         pattern: "{controller}/{*viewName}", 
  14.                         defaults: new { action = "DisplayAnyView" }); 
  15.            }); 
  16.        } 

上面代碼的意思是,使用視圖名 (*viewName) 來匹配 Action,如果能找到對應(yīng)的 Action 則可以進(jìn)行渲染,如何找不到就默認(rèn)跳到 DisplayAnyView 這個Action上,下面是 DisplayAnyView 方法的實現(xiàn)。

 
 
 
 
  1. public IActionResult DisplayAnyView(string viewName) 
  2.    return View(viewName); 

完整的 AuthorController 代碼如下:

 
 
 
 
  1. public class AuthorController : Controller 
  2.    { 
  3.        [HttpGet] 
  4.        public ActionResult Index() 
  5.        { 
  6.            return View(); 
  7.        } 
  8.        public IActionResult DisplayAnyView(string viewName) 
  9.        { 
  10.            return View(viewName); 
  11.        } 
  12.    } 

接下來把程序跑起來后,輸入:http://localhost:32172/Author/Books , 你會觀察到 DisplayAnyView 方法中的斷點被成功命中,如下圖所示:

Action 是 Controller 下的 public & non-static 方法,它可以有效的將 request 請求匹配到對應(yīng)的 action 上,然而當(dāng) request 所匹配的 action 不存在時將會拋出運(yùn)行時異常,現(xiàn)在你可以避免這種情況了。

譯文鏈接:https://www.infoworld.com/article/3600794/how-to-handle-unknown-actions-in-aspnet-core-mvc-5.html


網(wǎng)頁名稱:如何在ASP.NETCoreMVC5中處理未知的Action
轉(zhuǎn)載源于:http://www.5511xx.com/article/dpgpcge.html