TagHelperها در ASP.NET Core 1.0 MVC

TagHelperها یک مشخصه و ویژگی ویژه هستند که به کدهای سمت سرور توانایی ارائه شدن در فایل View را میدهند . در این مقاله ، tagHelperها در ASp.Net Core را بررسی خواهیم کرد .

TagHelperها در ASP.NET Core 1.0 MVC

با اینکه ، HTML Helper ها وجود دارند ، اما Tag Helperها خیلی پر استفاده و محبوب هستند ، اینها فقط صفت هایی هستند که به مولفه های HTML اضافه میشوند ؛ که درک و فهم آن ،  کار خیلی آسانی برای طراحان UI و  توسعه دهندگان وب میباشد . 

TagHelperها به تگ های HTML ضمیمه میشوند . در صورتی که  ، Html Helperها متدهایی هستند که ، برای نیازمندی های Html فراخوانی میشوند . علاوه بر این ، TagHelperها توسط IntelliSense در VS پشتیبانی می‌شوند ، در حالی که Html Helper ها پشتیبانی نمیشوند . با تمام احترامی که برای Html helperها قائل هستیم ، اگر در لفافه بیان کنیم ، TagHelperها کارآمد هستند ، کد نویسیشان آسان است و کدهای های ما را مرتب نگه میدارد . تمامی TagHelperها از "-asp" برای مشخص کردن مقدار خاصی ، استفاده میکنند . برای مثال داریم :

• asp-controller برای مشخص کردن Controllerای که مورد استفاده قرار گرفته است ، بکار میرود .
• asp-action برای مشخص کردن actionای که مورد استفاده قرار گرفته است ، بکار میرود .
• asp-area برای مشخص کردن areaای که مورد استفاده قرار گرفته است ، بکار میرود .
• asp-for برای مشخص کردن مشخصه های بکار رفته ، استفاده میشود .
• asp-route برای مشخص کردن نام route به جای Controller و Action method مورد استفاده قرار میگیرد . 
• asp-validation-for برای مشخص کردن مشخصه هایی که باید برای یک چیزی اعتبارسنجی شوند مورد استفاده قرار میگیرد . 
• asp-validation-summary برای مشخص کردن وضعیت validation summary بکار رفته ، مورد استفاده قرار میگیرد . 
• asp-antiforgery برای فعال سازی یا غیر فعالسازی antiforgery مورد استفاده قرار میگیرد . 
• asp-append-version برای اضافه کردن شماره version مورد استفاده قرار میگیرد ، بنابراین اگر هر گونه تغییری در resource ایجاد شود ، شماره version نیز تغییر میکند . این بدان معناست که در صورت ایجاد هر گونه تغییرات ، یک منبع از cache استفاده نخواهد کرد . 

ASP.Net Core مجموعه ای از TagHelperهای از پیش تعریف شده را در 
Microsoft.AspNetCore.Mvc.TagHelpers فراهم آورده است . این TagHelper ، namespaceهای مهم را فراهم آورده است که در زیر میبینید :

• AnchorTagHelper

• FormTagHelper
• ImageTagHelper
• InputTagHelper
• LabelTagHelper
• LinkTagHelper
• OptionTagHelper
• ScriptTagHelper
• SelectTagHelper
• TextAreaTagHelper
• ValidationMessageTagHelper
• ValidationSummaryTagHelper
• CacheTagHelper
• DistributedCacheTagHelper
• EnvironmentTagHelper


AnchorTagHelper :

AnchorTagHelper توسط یک tag مورد استفاده قرار میگیرد . این به data element اجازه میدهد که یک تگ را بوسیله asp-area, asp-controller, asp-action, asp-route برای نمایش area, controller, action method و route برنامه ریزی کنند . 

<a asp-controller="Contact" asp-action="GetContact" asp-route-id="1">Get Details</a>

FormTagHelper :

FormTagHelper برای تگ form مورد استفاده قرار میگیرد ، و ما را قادر به مشخص کردن Controller و Actiom Method میکند . همچنین این توانایی را به ما میدهد که به جای Controller و Action method یک route name تعریف کنیم . در ضمن ، سرویس هایی را برای مدیریت درخواست های جعلی cross-site فراهم می‌آورد . 

<form asp-controller="Contact" asp-action="CreateContact" asp-antiforgery="true" method="post">
... 
</form>


ImageTagHelper :

ImageTagHelper با تگ img مورد استفاده قرار میگیرد . این اجازه مشخص کردن asp-append-version را میدهد ، که برای آدرس دهی مشکلات image cache مورد استفاده قرار میگیرد . 

<img asp-append-version="true" src="/logo.png" alt="My ORganization" />


InputTagHelper :
InputTagHelper  با تگ input مورد استفاده قرار میگیرد . این اجازه برنامه ریزی input tag توسط صفت 
asp-for را ، به data element میدهد . input tag type نوع data element و data annotation را مشخص میکند . قوانین اعتبارسنجی داده ها توسط data annotation ثبت میشود. 

برای مثال ، data elementای با نوع داده type="checkbox" ، Boolean را ایجاد خواهد کرد ،  
type="text" ، string را ایجاد خواهد کرد ، type="datetime" ، DateTime را ایجاد خواهد کرد و ... .

<input asp-for="Name" class="form-control" />


LabelTagHelper :
LabelTagHelper  با تگ label مورد استفاده قرار میگیرد .  این اجازه برنامه ریزی input tag توسط صفت asp-for را ، به data element میدهد . این برای نمایش مقدار data annotaion برای
data element خاصی مورد استفاده قرار میگیرد . 

<label asp-for="Name" class="col-md-2 control-label"></label>


LinkTagHelper :
LinkTagHelper  با تگ link مورد استفاده قرار میگیرد . که به ما اجازه مدیریت رفتارهای یک لینک را میدهد . برای مثال ، منبع و منبع بازگشتی را مشخص و کنترل میکند . 

<link asp-append-version="true" /link>

OptionTagHelper :
OptionTagHelper در تگ select مورد استفاده قرار میگیرند . این به ما اجازه بکار بردن مولفه های option را بصورت فردی بوسیله SelectTagHelper میدهد . 

<select asp-for="Title" asp-items="Model.Titles"></select>

ScriptTagHelper :
ScriptTagHelper  با تگ script مورد استفاده قرار میگیرد . که به ما اجازه مدیریت رفتار بلاک های script را میدهد . برای مثال ، منبع و منبع بازگشتی را مشخص و کنترل میکند . 

<script asp-append-version="true">
...
</script>


SelectTagHelper :

SelectTagHelper با تگ select مورد استفاده قرار میگیرد . این اجازه برنامه ریزی data elemtnt با
select tag و option را توسط صفت های asp-for و asp-item میدهد ، که asp-for برای مشخص کردن value element های انتخاب ده ، مورد استفاده قرار میگیرد و asp-item برای مشخص کردن لیستی که با option محدود شده است ، مورد استفاده قرار میگیرد . قوانین data validation توسط data annotation ثبت میشوند . 

<select asp-for="Title" asp-items="Model.Titles"></select>

TextAreaTagHelper :
TextAreaTagHelper  با تگ textarea مورد استفاده قرار میگیرد . این به data elemnt اجازه برنامه ریزی با textarea tag را توسط صفت asp-for میدهد . قوانین data validation توسط data annotation ثبت میشوند . 

<textarea asp-for="Description" rows="5" cols="30" />


ValidationMessageTagHelper  :
ValidationMessageTagHelper با تگ span مورد استفاده قرار میگیرد . این به validation messageها اجازه برنامه ریزی با span tag را توسط صفت asp-validation-for میدهد . 

<span asp-validation-for="Name" class="text-danger" />

ValidationSummaryTagHelper :
ValidationSummaryTagHelper  توسط تگ div مورد استفاده قرار میگیرد . این به تمام validation message ها اجازه برنامه ریزی به div tag filtered را توسط صفت asp-validation-summary میدهد . مقادیر مجاز برای asp-validation-summary عبارت اند از : All , ModelOnly و None .

​<div asp-validation-summary="ModelOnly" class="text-danger"></div>

CacheTagHelper :
CacheTagHelper  برای cache کردن هر قسمتی از view مورد اسنفاده قرار میگیرد . آن به هیچ تگ HTML ای اضافه نمیشود . آن یک کنترل Server side است که برای ذخیره سازی از MemoryCache استفاده میکند . 

MeemoryCache به ما اجازه مدیریت زمان انقضا داده ها را توسط صفت های زیر به ما میدهد :

• صفتهای Expires :
expires-after
- expires-sliding
- expires-on 

• صفت vary-by اجازه نمایش داده های cache شده را میدهد :

- بر مبنای یکسری کلید یا داده های model باشد ، استفاده از vary-by
- بر مبنای کاربر باشد ، استفاده از vary-by-user
- بر مبنای cookie باشد ، استفاده از vary-by-cookie
- برمبنای یکسری مقادیر header باشد ، استفاده از vary-by-header
- بر مبنای یکسری صفات qury string باشد ، استفاده از vary-by-query
-بر مبنای route باشد ، استفاده از vary-by-route

<cache vary-by-user="true">
...
</cache>

DistributedCacheTagHelper :
DistributedCacheTagHelper برای cache کردن Content در cache توزیع شده در سرور ، مورد استفاده قرار میگیرد . این زمانی که ما قصد مدیریت مقدار زیادی محتوا را  داریم یا برای اطمینان از دسترس بودن داده cache شده ، زمانی که برنامه restart میشود  ، بسیار مثمر ثمر است .  

مسئولیت تعریف کلید منحصر به فرد برای cache بر عهده ما میباشد . 

این سرویس توزیع شده cache در Startup.ConfigureServices ثبت میشود . اگر هیچ گونه سرور توزیع شده cache را پیکربندی نکنیم ، ASP.Net Core از MemoryCash پیش فرض استفاده خواهد کرد .
همچنین ما میتوانیم از SqlServerCache یا هر Cache دیگری برحسب نیازمان استفاده کنیم  

<distributed-cache name="UniqueCacheKey">
...
</distributed-cache>

EnvironmentTagHelper  :
EnvironmentTagHelper  یک tagHelper سمت سرور میباشد ، که تفاوت مدیریت تگ های Html که در محیط های متفاوت مورد استفاده قرار گرفته اند را ، نمایش میدهد . زمانی که ما باید تفاوت URLها برای Link ها و Scriptها درمحیطهای متفاوت را نمایش دهیم ،  این بسیار ساده میشود .

<environment names="Development">  
    <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />  
    <link rel="stylesheet" href="~/css/site.css" /> </environment>  
<environment names="Staging,Production">  
    <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.6/css/bootstrap.min.css" asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css" asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" />  
    <link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" /> </environment>  

آموزش asp.net mvc

دانلود نسخه ی PDF این مطلب