استفاده از Area در ASP.NET Core

چهارشنبه 19 آبان 1395

در این مقاله قصد داریم شما را با Area ها در ASP.NET Core که نسخه جدید از ASP.NET می باشد، آشنا کنیم و آن را در قالب یک مثال توضیح دهیم .

استفاده از Area در ASP.NET Core

مقدمه

Area یکی از امکانات ASP.NET MVC می باشد که استفاده از آن برنامه شما را ماژولار می کند تا بتوان به راحتی آن را توسعه دهید .

زمینه

زمانی که در ASP.NET MVC یک Area اضافه می کنیم پوشه های Controllre ، Views ، ... را به صورت خودکار ایجاد می کند اما در ASP.NET Core این کار به صورت دستی می باشد .

ایجاد پوشه Area

در مثال زیر یک Area به نام Admin به همراه پوشه های آن ایجاد کرده ایم .

ایجاد Controller

برای ایجاد Controller ،  میتوان بر روی پوشه Controller کلیک راست کنید و یک کلاس به آن اضافه کنید .

اما با انتخاب "Add New Item"  میتوان به راحتی در منوی باز شده گزینه MVC Controller Class را انتخاب کنید تا یک Controller ایجاد شود .

همان طور که مشاهده می کنید پس از ایجاد کنترلر یک متد به نام Index نیز در آن ایجاد شده است .حال صفت Area[(“Admin”)] را بر روی Controller قرار می دهیم .

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;

// For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860

namespace FirstCoreApplication.Areas.Admin.Controllers
{
    [Area("Admin")]
    public class HomeController : Controller
    {
        // GET: /<controller>/
        public IActionResult Index()
        {
            return View();
        }

        public IActionResult Details()
        {
            return View();
        }
    }
}


ایجاد View

در ASP.NET Core ایجاد یک View به راحتی ASP.NET MVC 5 نیست، شما باید برروی پوشه View کلیک راست کرده و یک پوشه به نام Home در پوشه Views ایجاد کرده و View خود را به آن اضافه کنید .

پس از ایجاد یک View  یک صفحه خالی ایجاد می شود . میتوان به آن Layout اضافه کنید . حال قطعه کد زیر را به آن اضافه کنید .

@*
    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
*@

@{
    Layout = "~/Areas/Admin/Views/Shared/_Layout.cshtml";
}

<h1>Admin Home</h1>

@Html.ActionLink("Shown Details", "Details", "Vendors", new { area = "Admin" })

ایجاد مدل

برای Moldel نیز یک پوشه مانند Controller وView ایجاد می کنیم .

تنظیمات Routing برای Areaها در ASP.NET Core

تنظیمات Routing در کلاس Startup.cs  و در متد Configure قرار دارد . مانند کد زیر که از UseMvc برای تنظیم کردن Route استفاده شده است .

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            loggerFactory.AddDebug();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseBrowserLink();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            app.UseStaticFiles();

            app.UseMvc(routes =>
            {
                routes.MapRoute(name: "areaRoute",
                        template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");

                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
        }

در کد بالا یک Route به صورت دستی ایجاد کرده ایم به این دلیل که در Route قبلی Area تعریف نشده بود.

تولید URL برای Area

برای دسترسی به area  یک Area با کنترلر Home و متد Index،  ایجاد کردیم. میتوان از url های زیر استفاده کنید :

1.http://localhost:58767/Admin  : Area ادمین با کنترلر و متد پیش فرض

2.http://localhost:58767/Admin/Home  : Area ادمین با کنترلر Home

3. http://localhost:58767/Admin/Home : Area ادمین با کنترلر Home و متد Index

برای ایجاد لینک میتوان از Tag helper استفاده کنید .

<a asp-action="Details" asp-area="Admin" asp-controller="Vendors">Details</a>

نکته : وارد کردن کد بالا در صفحه یک لینک معتبر ایجاد نمی کند برای این کار نیاز است _ViewImports.cshtml  را از ~/Views/_ViewImports.cshtml کپی کرده  و  در ~/Areas/Admin/Views/_ViewImports.cshtml وارد می کنیم .

برای استفاده از Html Helper میتوان از متد زیر استفاده می کنیم .

@Html.ActionLink("Shown Details", "Details", "Vendors", new { area = "Admin" })

آموزش asp.net mvc

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید