اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
دو دقیقه
با Html Helper ما میتوانیم لینکهای متن دار را ایجاد نماییم. شاید گاهی پیش آید که بجای لینکهای متنی، از تصویر بجای لینک بخواهید استفاده نمایید. میتوان هر زمانی، لینکی را که حاوی یک تصویر باشد، ایجاد کنید. اما با Asp.net MVC یکی از راههای مناسب برای انجام این کار استفاده از Extension methods است که از تکرار کد نویسی نیز جلو گیری مینماید.
همان طور که در کد زیر مشاهد مینمایید، این کد تشکیل شده است از نوشته لینک و نام اکشن متد و نام کنترلر آن، همراه با آی دی و تعریف css. کاری که قرار است صورت گیرد همانند ActionLink میباشد، با این تفاوت که تصویری هم به لینک ما اضافه خواهد شد:
برای نوشتن این متد جهت تولید لینکهایی به همراه تصویر، از کدهای زیر استفاده میکنیم:
اولین پارامتر اجازه گسترش HtmlHelper را میدهد و توسط آن میتوان متدهای جدید خود را با کلمه کلیدی @Html شروع کنید.
4 پارامتر بعدی، پارامترهای ضروری هستند. یکی controller، پس از آن Action routeValues و سپس آدرس تصویر است. در نهایت، ما میتوانیم در صورت نیاز متن جایگزین و ویژگیهای اضافی متنی را نیز مشخص نماییم.
در رابطه با توضیحات مربوط به بدنه متد: ابتدا لینکها را ایجاد خواهد کرد با استفاده از RequestContext و UrlHelper. سپس بخش ساخت تصویر و اضافه کردن آن به لینک است. برای استفاده از میتوان از کد زیر استفاده نمود:
در شکل بالا خروجی HTML تولید شده را مشاهد مینمایید.
همان طور که در کد زیر مشاهد مینمایید، این کد تشکیل شده است از نوشته لینک و نام اکشن متد و نام کنترلر آن، همراه با آی دی و تعریف css. کاری که قرار است صورت گیرد همانند ActionLink میباشد، با این تفاوت که تصویری هم به لینک ما اضافه خواهد شد:
@Html.ActionLink("Text to display", "ActionNameHere", "ControllerNameHere", new { id = 123 }, new{@class="myClass"})
public MvcHtmlString ActionImage(this HtmlHelper htmlHelper, string controller, string action, object routeValues, string imagePath, string alternateText = "", object htmlAttributes = null) { var anchorBuilder = new TagBuilder("a"); var url = new UrlHelper(HtmlHelper.ViewContext.RequestContext); anchorBuilder.MergeAttribute("href",url.Action(action,controller,routeValues)); var imgBuilder = new TagBuilder("img"); imgBuilder.MergeAttribute("src", url.Content(imagePath)); imgBuilder.MergeAttribute("alt", alternateText); var attributes = (IDictionary<string, object>) HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes); imgBuilder.MergeAttributes(attributes); string imgHtml = imgBuilder.ToString(TagRenderMode.SelfClosing); anchorBuilder.InnerHtml = imgHtml; return MvcHtmlString.Create(anchorBuilder.ToString()); }
4 پارامتر بعدی، پارامترهای ضروری هستند. یکی controller، پس از آن Action routeValues و سپس آدرس تصویر است. در نهایت، ما میتوانیم در صورت نیاز متن جایگزین و ویژگیهای اضافی متنی را نیز مشخص نماییم.
در رابطه با توضیحات مربوط به بدنه متد: ابتدا لینکها را ایجاد خواهد کرد با استفاده از RequestContext و UrlHelper. سپس بخش ساخت تصویر و اضافه کردن آن به لینک است. برای استفاده از میتوان از کد زیر استفاده نمود:
@Html.ActionImage("Workout", "Delete", new { id = @workout.Id }, "/images/bluetrash.png", "Delete", new { id="deletebutton"})
در شکل بالا خروجی HTML تولید شده را مشاهد مینمایید.