本文转载自微信公众号「码农读书」,作者码农读书。转载本文请联系码农读书公众号。
成都创新互联公司为您提适合企业的网站设计 让您的网站在搜索引擎具有高度排名,让您的网站具备超强的网络竞争力!结合企业自身,进行网站设计及把握,最后结合企业文化和具体宗旨等,才能创作出一份性化解决方案。从网站策划到成都做网站、网站建设, 我们的网页设计师为您提供的解决方案。
ASP.NET Core MVC 5 是一个轻量级,开源的,利于单元测试的基于 ASP.NET Core 运行时的 web 框架,在开发时你肯定会遇到不少那些 request 无法匹配 Action 的情况,通常做法是抛出 404,但有些场景下我希望能收口到统一一个 Action 去执行,这篇文章我们将会讨论如何去处理那些未知 Action 的收口。
创建 Controller
现在我们创建一个 AuthorController 类,如下代码所示:
- public class AuthorController : Controller
- {
- [HttpGet]
- public ActionResult Index()
- {
- return View();
- }
- }
未知 Action 的问题
先抛出问题,然后再来看一下怎么解决,假设现在在做一个 图书搜索系统,你希望用户可以根据 作者名,书名,文章标题 等条件去查询图书信息,首先你需要知道目录所包含的所有作者,书籍,文章的详细信息,那么这个需求怎么实现呢?
为了实现需求,我肯定会先在 Views 文件夹下新增对应的 view 文件,比如 Authors.cshtml, Books.cshtml, Articles.cshtml,方便用户查询时导向各自的 view ,比如下面的请求。
- /Author/Books
- /Author/Articles
显而易见下面的 url 它可以非常利索的导向 AuthorController 下的 Index 方法。
- /Author/Index
回过头来,如果你在浏览器中输入如下两个url,这时候肯定会抛异常,很显然 AuthorControler 下并没有所谓的 Books 和 Articles 这两个 Action 方法。
- /Author/Books
- /Author/Articles
使用 routing 处理未知 Action
那如何对这些未知 Action 进行收口呢?可以使用 Routing 机制来解决此类问题,如下代码所示:
- public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
- {
- app.UseStaticFiles();
- app.UseRouting();
- app.UseAuthorization();
- app.UseEndpoints(endpoints =>
- {
- endpoints.MapControllerRoute(
- name: "viewName",
- pattern: "{controller}/{*viewName}",
- defaults: new { action = "DisplayAnyView" });
- });
- }
上面代码的意思是,使用视图名 (*viewName) 来匹配 Action,如果能找到对应的 Action 则可以进行渲染,如何找不到就默认跳到 DisplayAnyView 这个Action上,下面是 DisplayAnyView 方法的实现。
- public IActionResult DisplayAnyView(string viewName)
- {
- return View(viewName);
- }
完整的 AuthorController 代码如下:
- public class AuthorController : Controller
- {
- [HttpGet]
- public ActionResult Index()
- {
- return View();
- }
- public IActionResult DisplayAnyView(string viewName)
- {
- return View(viewName);
- }
- }
接下来把程序跑起来后,输入:http://localhost:32172/Author/Books , 你会观察到 DisplayAnyView 方法中的断点被成功命中,如下图所示:
Action 是 Controller 下的 public & non-static 方法,它可以有效的将 request 请求匹配到对应的 action 上,然而当 request 所匹配的 action 不存在时将会抛出运行时异常,现在你可以避免这种情况了。
译文链接:https://www.infoworld.com/article/3600794/how-to-handle-unknown-actions-in-aspnet-core-mvc-5.html
网站名称:如何在ASP.NETCoreMVC5中处理未知的Action
网页网址:http://www.shufengxianlan.com/qtweb/news19/298519.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联