TagHelperها در ASP.NET Core 1.0 MVC
یکشنبه 2 آبان 1395TagHelperها یک مشخصه و ویژگی ویژه هستند که به کدهای سمت سرور توانایی ارائه شدن در فایل View را میدهند . در این مقاله ، tagHelperها در ASp.Net Core را بررسی خواهیم کرد .
با اینکه ، 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
- ASP.net MVC
- 1k بازدید
- 3 تشکر