TagHelperها در ASP.NET Core 1.0 MVC

یکشنبه 2 آبان 1395

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

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

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

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

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