Endpoint Routing در ASP.NET Core 2.2.0
Endpoint Routing در ASP.NET Core 2.2.0
Endpoint Routing in 2.2
Endpoint Routing چیست؟
مسیریابی به طور سنتی سازنده ای است که در اکوسیستم ASP.NET محدود شده است. تا زمانی که کد شما در داخل این ساختار اجرا شود، می توانید اطلاعات مسیر را بخوانید. با این حال، با گسترش تداخل middleware که پیش از و بعد از ASP.NET اجرا می شود، نیاز به یک سیستم مسیریابی در برنامه افزایش یافته است.
Endpoint Routing در ASP.NET Core 2.2.0
Endpoint Routing in 2.2
Endpoint Routing چیست؟
مسیریابی به طور سنتی سازنده ای است که در اکوسیستم ASP.NET محدود شده است. تا زمانی که کد شما در داخل این ساختار اجرا شود، می توانید اطلاعات مسیر را بخوانید. با این حال، با گسترش تداخل middleware که پیش از و بعد از ASP.NET اجرا می شود، نیاز به یک سیستم مسیریابی در برنامه افزایش یافته است.
شما می توانید با استفاده از متد UseMvc در میان افزار Mvc مسیر و Routeهایتان را تعریف کنید. سپس زمانی که از این میان افزار درخواست شد، براساس تمام اطلاعاتی که دارد، Route مناسب را انتخاب کرده و متوجه می شود که کدام Controller و Action باید فراخوانی شود.
همچنین برای فراخوانی Route موجود (مسیری که از قبل وجود داشته است) می توانید از MapRoute استفاده کنید.
ASP.NET Core 2.2
using Microsoft.AspNetCore.Internal;
public class Startup {
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app .UseEndpointRouting() // Registering this prior to your middleware unlocks the ✨. //.YourMiddleware() .UseMvc(); } }
ASP.NET Core 3.0 (preview-2)
using Microsoft.AspNetCore.Builder;
public class Startup
{
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app
.UseRouting() // Registering this prior to your middleware unlocks the ✨.
//.YourMiddleware()
.UseMvc();
}
}
مثال:
Model
public class Post
{
public string Slug { get; set; }
public string Title { get; set; }
}
///
Razor view
@page "{slug}"
@model PostModel
@Model.Title
...
Razor view code
public class PostModel : BaseModel
{
public PostModel(Post post)
{
this.post = post;
}
public Post post { get; private set; }
public void OnGet()
{ }
}
Middleware
public class PostMiddleware
{
public PostMiddleware(
RequestDelegate next,
IDatabase database)
)
{
this.next = next;
this.database = database;
}
private readonly IDatabase datbase;
private readonly RequestDelegate next;
public async Task InvokeAsync(HttpContext context)
{
var route = context.GetRouteData();
if (route.Values.TryGetValue("slug", out var routeSlug))
{
var slug = routeSlug.ToString();
var post = (await database.Fetch
Startup
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped
"منتشر شده در سایت ABLY.IR"