اشتراکها
همانطور که میدانید در صورت عدم تعریف صریح layout در یک View، این تعریف از فایل Views\_ViewStart.cshtml دریافت میگردد:
برای معرفی صریح فایل layout، تنها کافی است مسیر کامل فایل layout را در یک View مشخص کنیم:
حال ما میخواهیم یک فیلتر سفارشی را تعریف کنیم تا به براحتی امکان تعریف Layout در سطح کنترلر و هم در سطح اکشن متد به صورت Attribute را داشته باشد :
همچنین میتوانیم این فیلتر سفارشی را در سطح کنترلر تعریف کنیم تا تمام اکشن متدهای داخل کنترلر از Layout مربوطه استفاده کنند:
برای تعریف چنین اکشن فیلتری کد زیر را مینویسیم :
همانطور که میدانید برای تعریف یک اکشن فیلتر سفارشی میبایست از کلاس ActionFilterAttribute ارث بری کنیم، حالا برای کلاسی که تعریف کرده ایم یک خصوصیت readonly را تعریف و سپس برابر با یک پارامتر با نام masterName که از طریق سازنده کلاس دریافت میشود قرار داده ایم. در نهایت متد OnActionExecuted را بازنویسی کرده ایم به این صورت که مقدار دریافتی توسط سازنده کلاس را برابر با نام Layout موردنظرمان است را به خاصیت MasterName اختصاص میدهیم.
@{ Layout = "~/Views/Shared/_Layout.cshtml"; }
@{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>Index</h2>
[SetLayoutAttribute("_MyLayout")] public ActionResult Index() { return View(); }
[SetLayoutAttribute("_MyLayout")] public class HomeController : Controller { public ActionResult Index() { return View(); } public ActionResult About() { ViewBag.Message = "Your application description page."; return View(); } public ActionResult Contact() { ViewBag.Message = "Your contact page."; return View(); } }
public class SetLayoutAttribute : ActionFilterAttribute { private readonly string _masterName; public SetLayoutAttribute(string masterName) { _masterName = masterName; } public override void OnActionExecuted(ActionExecutedContext filterContext) { base.OnActionExecuted(filterContext); var result = filterContext.Result as ViewResult; if (result != null) { result.MasterName = _masterName; } } }
اشتراکها
DatePicker متنباز شمسی برای Flutter
ترجیح بنده، استفاده از Angular Material Design است ولی در صورتی که قصد استفاده از بوت استرپ را در برنامههای Angular دارید این لینک میتواند مفید باشد.
اشتراکها
لیست منابع برای آموزش AngularJs 2
اشتراکها
فریم ورک Material UI
جهت اطلاع
- این پروژه به Angular Material 9x ارتقاء داده شده؛ جزئیات بیشتر
- کلیات نهایی آن با مطالب این سری یکی است. فقط روش importهای آن تغییر کرده که در سورس نهایی قابل مشاهدهاست.
در انگولار 6 با معرفی schematics به راحتی با یک دستور کلیه کارهایی که در پست بالا گفته شد قابل انجام است.[+ ]
ng add @angular/material