Post on 16-Apr-2017
هدف بحثآشنایی باcontroller
آشنایی باRouting
آشنایی باFilterها
آشنایی باArea
شروع به نوشتنcontroller
تیتر مطالبController وActionچیست؟
هاActionانواع خروجی های
ها Actionمسیریابی
وقتی درخواستی می رسد کدامactionبرای اجرا انتخاب می شود؟
اولویت ها در مسیریابی ها چگونه اند
فیلتر چیست و چگونه تعریف می شود
انواع فیلتر ها
Configuring Filters--- >dot net core
Authorization Filters
Resource Filters--- >dot net core
Action Filters
Exception Filters
Result Filters
Areaآشنایی با
Controller وActionچیستAction تابع می باشد هرAction به یک درخواست رسیده از سمت مرورگر پاسخ می
.دهد
درASP.NET MVC مفهومController کالسی می باشد برای دسته بندی منطقی ،.هاActionگروهی از
این دسته بندی ها بر اساس حوزه کاریaction ها می باشد و قابلیت اعمال قوانینقوانینی برای مسیریابی ، کش ، کنترل مانند –ها را می دهد Actionدسته جمعی به
دسترسی
فایل کنترل ها در پوشه“Controllers” قرار می گیرند.
کالس کنترلر از کالسMicrosoft.AspNetCore.Mvc.Controllerارث می برد.
نام کالس کنترلر باید بهController مانند –ختم شودAccountController
HTTP requests verb
. ها مشخص می شوند HTTP verbدرخواست های کالینت از طریق
دهدمی خواهد تا کاری را برایشان انجام سرور درخواست ها از این
:ها verbانواع
GET
POST
PUT
DELETE
Head
Trace
OPTIONS
“
”
در یک آدرس یکسان نیز برای هر یکها باید یک اکشنی برایhttp verbاز
پاسخگویی موجود باشد
Actionانواع خروجی های
یمسیر یاب
هاactionمسیر یابی
http://zanjandotnet.ir/home/index
First segment Second segment
آدرس ها و خروجی ای که از مسیریاب می خواهیم
URL درخواست شده Action انتخابی
http://example.com/Users/Edit/5 UsersController.Edit(5)
http://example.com/Users/Edit UsersController.Edit()
http://example.com/Users UsersController.Index()
http://example.com HomeController.Index()
بتونه تا مسیریابیتعریف بکنیم باید آدرسهای مورد نیاز را از قبل درست تحویل دهد Actionدرخواست را به
تعریف قوانین مسیریابی
RouteConfig.cs
Global.asax.cs
مسیر یابی چگونه کار می کند
“{controller} /{action}”
“home/index”
“anything/willdo”
=============================
“abc{controller} / {action}”
“abchome / whatever”
==================
“abc{controller} / {action}”
“home / whatever”
اولویت در مسیرهای تعریف شده
RouteData
هایی که مسیریاب ایجاد می کندKey Valueمجموعه
و یا خود کنترلر مورد استفاده قرار می گیردmodel binderاین مجموعه توسط
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}«
);
“product/index/3”
Variable value
controller Product
action Index
id 3
RouteData
مقادیر پیش فرض
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { id=3 }
);
“product/index”
Variable Value
controller Product
action Index
Id 3
مقادیر اختیاری
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {action = "Index“, id=UrlParameter.Optinal}
);
• “product/index/3”
• “product/index”
Variable value
controller Product
action Index
id 3
Variable value
controller Product
action index
Namespace در مسیریابی
IgnoreRoute
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
404
فیلتردستکاری کد
چیستفیلتر عد از قبل یا ب، یک کالس سفارشی است که شما می توانید منطق برنامه را جهت اجرا، فیلتر
. در آن پیاده سازی نمایید، Actionیک اجرای
شودفیلتر چگونه معرفی می به روشAttribute بر رویAction ها یاControllerها
بصورت سراسری
attributeاستفاده به شکل
[HandleError] [Authorize]public class CourseController : Controller{
[OutputCache][RequireHttps]public ActionResult Net( string name ){
ViewBag.Course = BL.GetCourse(name);return View();
}}
Global.asaxبصورت سراسری در فایل معرفی
GobalFilters.Filters.Add(new AuthorizationFilterA() { Order = 2});
فیلترهاانواع و اولویت
.1Authorization filters: نوع فیلترها پیش از اجرای هر متد یا فیلتر دیگری در این
. کنترلر جاری اجرا شده و امکان لغو اجرای آن را فراهم می کنند
.2Action filters : متدهای کنترلر جاری اجرا می شوند و همچنین پیش اجرای پس از و پیش
را تحت کنترل Viewبه این ترتیب برای مثال می توان نحوه رندر یک . از ارائه خروجی نهایی متدها
گرفت
.3Result filters : بسیار شبیه بهActionFilter ازاست با این تفاوت که تنها پیش
اجرای متد، فراخوانی می گرددازبازگرداندن نتیجه متد و همچنین پس
.4Exception filters : پس از اجرای تمامی فیلترهای دیگر، همواره اجرا خواهند شد؛
صرفنظر از اینکه آیا در این بین استثنایی رخ داده است یا خیر
فیلترهای هم نوعاولویت در public class HomeController : Controller
{
[AuthorizationFilterA(Order = 2)]
[AuthorizationFilterB(Order = 1)]
public ActionResult Index()
{
return View();
}
}
ترتیب اجرا
فیلتر های دلخواه
نحوه افزودن فیلتر دلخواهپیاده سازی اینترفیس یکی از انواع فیلترها و ارث بری از کالس :روش اولFilterAttribute
ارث بری از :روش دومActionFilterAttribute
پیاده سازی داخل کنترلر:روش سوم
ارث بری از کالس فیلترهای توکار و مهیای در :روش چهارمMVCو تحریف متدهای آن
Authorization Filter
Action Filter
Result Filter
Exception Filter
مثالpublic class MyExceptionAttribute: FilterAttribute, IExceptionFilter
{public void OnException(ExceptionContext filterContext)
{if (!filterContext.ExceptionHandled &&
filterContext.Exception is NullReferenceException){
filterContext.Result =new RedirectResult("/MyError.html");
filterContext.ExceptionHandled = true;
}}
}
Area
نظم بخشی به کد
Areas
public class AdminAreaRegistration : AreaRegistration {
public override string AreaName {
get { return "Admin"; }
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
Areas
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);