Skip to content

Commit a6961d4

Browse files
committed
Introduce DriveControllerAction
1 parent 0777eca commit a6961d4

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

src/MiddlewareAction/Startup.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Threading.Tasks;
66
using Microsoft.AspNetCore.Builder;
77
using Microsoft.AspNetCore.Hosting;
8+
using Microsoft.AspNetCore.Http;
89
using Microsoft.AspNetCore.Mvc;
910
using Microsoft.AspNetCore.Mvc.Abstractions;
1011
using Microsoft.AspNetCore.Mvc.Controllers;
@@ -45,15 +46,20 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
4546
{
4647
var routeData = new RouteData();
4748
routeData.Values.Add("message", "Hello World!");
48-
var actionDesciptor = CreateActionDescriptor<HomeController>(nameof(HomeController.Index), routeData);
49-
var actionContext = new ActionContext(context, routeData, actionDesciptor);
50-
var actionInvokerFactory = app.ApplicationServices.GetRequiredService<IActionInvokerFactory>();
51-
var invoker = actionInvokerFactory.CreateInvoker(actionContext);
52-
await invoker.InvokeAsync();
49+
await DriveControllerAction(context, routeData, app);
5350
});
5451
});
5552
}
5653

54+
private async Task DriveControllerAction(HttpContext context , RouteData routeData, IApplicationBuilder app)
55+
{
56+
var actionDesciptor = CreateActionDescriptor<HomeController>(nameof(HomeController.Index), routeData);
57+
var actionContext = new ActionContext(context, routeData, actionDesciptor);
58+
var actionInvokerFactory = app.ApplicationServices.GetRequiredService<IActionInvokerFactory>(); //ActionInvokerFactory
59+
var invoker = actionInvokerFactory.CreateInvoker(actionContext); //ControllerActionInvoker
60+
await invoker.InvokeAsync();
61+
}
62+
5763
private static ActionDescriptor CreateActionDescriptor<TController>(
5864
string actionName, RouteData routeData)
5965
{
@@ -79,6 +85,7 @@ private static ActionDescriptor CreateActionDescriptor<TController>(
7985
routeData.Values.Add("controller", actionDesciptor.ControllerName.Replace("Controller", ""));
8086
routeData.Values.Add("action", actionDesciptor.ActionName);
8187

88+
//For binding action parameters
8289
foreach (var routeValue in routeData.Values)
8390
{
8491
var parameter = new ParameterDescriptor();

src/MiddlewareAction/Views/Shared/_Layout.cshtml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<head>
44
<meta charset="utf-8" />
55
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6-
<title>@ViewData["Title"] - MiddlewareAction</title>
6+
<title>@ViewData["Title"] - MvcInMiddleware</title>
77

88
<environment include="Development">
99
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
@@ -21,7 +21,7 @@
2121
<header>
2222
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
2323
<div class="container">
24-
<a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">MiddlewareAction</a>
24+
<a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">MvcInMiddleware</a>
2525
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
2626
aria-expanded="false" aria-label="Toggle navigation">
2727
<span class="navbar-toggler-icon"></span>
@@ -48,7 +48,7 @@
4848

4949
<footer class="border-top footer text-muted">
5050
<div class="container">
51-
&copy; 2019 - MiddlewareAction - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
51+
&copy; 2019 - MvcInMiddleware - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
5252
</div>
5353
</footer>
5454

0 commit comments

Comments
 (0)