در نوشته HTML Helper در ASP.NET Core MVC – بخش سوم درباره چگونگی ساخت تگ a به کمک متد ()ActionLink برای ساخت لینک درون یک فایل نما گفتیم. در این نوشته می خواهم درباره ساخت نشانی URL در برنامه های ASP.NET Core به کمک متدهایی کلاسی به نام UrlHelper صحبت کنم. در این کلاس سه متد به نام های ()Action و ()Page و ()RouteUrl است.

در نوشته های پیشین یک نمونه مثال درباره asp-action زدیم که به کمک آن یک لینک ساخته شد. در واقع در ASP.NET Core دو عبارت به نام های asp-action و asp-controller هستند که می توانند برای ساخت نشانی URL به ترتیب از نام متد کلاس کنترل گر و خود نام کلاس کنترل گر استفاده شوند.

عبارت های asp-action و asp-controller

در واقع asp-action و asp-controller دو تا از TagHelper ها در ASP.NET Core هستند که نیاز است تا درباره TagHelper ها در نوشته ای جدا صحبت شود. در یک فایل نمت برای نمونه به نام Index.cshtml در پوشه Views/Home می خواهید یک لینک به فایل نمای دیگر به نام Privacy.cshtml در مسیر Views/Home بسازید. هر دو در یک کلاس کنترل گر به نام HomeController و در دو متد همنام به نام های ()Index و ()Privacy هستند. بنابراین می خواهیم از فایل نمای درون یک کنترل گر به فایل نمای دیگری در همان کلاس کنترل گر لینک بسازیم، در اینجا تنها نیاز است تا asp-action را به کار ببریم.

بنابراین هرگاه بخواهیم در یک فایل نماهایی در یک کلاس کنترل گر و درون تگ a لینک بسازیم، می توانیم به تنهایی از asp-action استفاده کنیم. ولی اگر بخواهیم لینکی به یک متد از یک کلاس کنترل گر دیگر لینک بدهیم، پس می بایست هم asp-action و هم asp-controller را به کار ببریم، زیرا asp-controller نام یک کلاس کنترل گر را دریافت می کند.

در زیر سه کد از کاربرد آنها نوشته شده است که همگی را فرض کردیم در فایل Index.cshtml از Views/Home ساخته ایم. در اولی تنها asp-action در استفاده کردیم زیرا متد کنترل گر مبدا که می خواهیم به ان بزنیم، در همان کلاس کنترل گری است که متد فایل Index.cshtml در آن قرار دارد. در دومی با اینکه متد کنترل گر مقصد و متد فایل نمای کنونی هر دو در یک کلاس هستند ولی بازهم asp-controller را نوشته ام  ولی در این مورد اجباری نیست. در سومی می خواهم به متدی به نام EmployeeForm از کلاس کنترل گر Employee لینک بسازیم.

نکته مهم در به کار گیری از کلاس TagHelper پیوست کردن فضای نام آن در آغاز فایل نما بوسیله عبارت using@ و همانند کد زیر است. در نوشته HTML Helper در ASP.NET Core MVC – بخش دوم درباره عبارت using@ و تفاوت آن با عبارت model@ گفته ایم.

  • کلاس HtmlHelper و TagHelper و UrlHelper همگی در فضای نام Microsoft.AspNetCoreMvc قرار دارند.
  • برای دسترسی به متدهای کلاس HtmlHelper در فایل های نما باید از عبارت Html@ و به الگوی Html.MethodName@ کمک بگیریم.
  • برای دسترسی به متدهای کلاس UrlHelper در فایل های نما باید از عبارت Url@ و به الگوی Url.MethodName@ کمک بگیریم.

متد ()Action از کلاس UrlHelper

درون فایل های نما می توانیم به کمک عبارت Url@ به متدهای کلاس UrlHelper دسترسی داشته باشیم. این متد دارای چندین Overload است که می توانید از اینجا درباره همه آنها و همچنین دیگر کلاس های UrlHelper بخوانید. در کد زیر دو آرگومان را فرستاده ایم، ورودی یکم نام متد کلاس کنترل گر و دومی نام کلاس کنترل گر است.

در کد بالا، مقدار برگشتی متد ()Action را به ویژگی href تگ a اختصاص داده ایم. کد زیر نیز تگ اچ تی ام ال ساخته شده را نشان می دهد. همچنین مطابق با کد زیر می توانید برای ساخت نشانی با پروتکل HTTPS، چهارمین آرگومان را نیز برابر با رشته https قرار دهید. توجه کنید که در این صورت، شما می بایست دست کم سومین ورودی را برابر با null قرار دهید.