استفاده از Area در ASP.NET Core
چهارشنبه 19 آبان 1395در این مقاله قصد داریم شما را با Area ها در ASP.NET Core که نسخه جدید از ASP.NET می باشد، آشنا کنیم و آن را در قالب یک مثال توضیح دهیم .
مقدمه
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
- ASP.net MVC
- 2k بازدید
- 2 تشکر