41
Controller می رضا رحیابستان ت95 Rtwo.ir

Controller in asp.net mvc

Embed Size (px)

Citation preview

Page 1: Controller in asp.net mvc

Controllerرضا رحیمی

95تابستان

Rtwo.ir

Page 2: Controller in asp.net mvc
Page 3: Controller in asp.net mvc

هدف بحثآشنایی باcontroller

آشنایی باRouting

آشنایی باFilterها

آشنایی باArea

شروع به نوشتنcontroller

Page 4: Controller in asp.net mvc

تیتر مطالبController وActionچیست؟

هاActionانواع خروجی های

ها Actionمسیریابی

وقتی درخواستی می رسد کدامactionبرای اجرا انتخاب می شود؟

اولویت ها در مسیریابی ها چگونه اند

فیلتر چیست و چگونه تعریف می شود

انواع فیلتر ها

Configuring Filters--- >dot net core

Authorization Filters

Resource Filters--- >dot net core

Action Filters

Exception Filters

Result Filters

Areaآشنایی با

Page 5: Controller in asp.net mvc

Controller وActionچیستAction تابع می باشد هرAction به یک درخواست رسیده از سمت مرورگر پاسخ می

.دهد

درASP.NET MVC مفهومController کالسی می باشد برای دسته بندی منطقی ،.هاActionگروهی از

این دسته بندی ها بر اساس حوزه کاریaction ها می باشد و قابلیت اعمال قوانینقوانینی برای مسیریابی ، کش ، کنترل مانند –ها را می دهد Actionدسته جمعی به

دسترسی

فایل کنترل ها در پوشه“Controllers” قرار می گیرند.

کالس کنترلر از کالسMicrosoft.AspNetCore.Mvc.Controllerارث می برد.

نام کالس کنترلر باید بهController مانند –ختم شودAccountController

Page 6: Controller in asp.net mvc

HTTP requests verb

. ها مشخص می شوند HTTP verbدرخواست های کالینت از طریق

دهدمی خواهد تا کاری را برایشان انجام سرور درخواست ها از این

:ها verbانواع

GET

POST

PUT

DELETE

Head

Trace

OPTIONS

Page 7: Controller in asp.net mvc

در یک آدرس یکسان نیز برای هر یکها باید یک اکشنی برایhttp verbاز

پاسخگویی موجود باشد

Page 8: Controller in asp.net mvc

Actionانواع خروجی های

Page 9: Controller in asp.net mvc

یمسیر یاب

Page 10: Controller in asp.net mvc

هاactionمسیر یابی

http://zanjandotnet.ir/home/index

First segment Second segment

Page 11: Controller in asp.net mvc

آدرس ها و خروجی ای که از مسیریاب می خواهیم

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()

Page 12: Controller in asp.net mvc

بتونه تا مسیریابیتعریف بکنیم باید آدرسهای مورد نیاز را از قبل درست تحویل دهد Actionدرخواست را به

Page 13: Controller in asp.net mvc

تعریف قوانین مسیریابی

RouteConfig.cs

Global.asax.cs

Page 14: Controller in asp.net mvc

مسیر یابی چگونه کار می کند

“{controller} /{action}”

“home/index”

“anything/willdo”

=============================

“abc{controller} / {action}”

“abchome / whatever”

==================

“abc{controller} / {action}”

“home / whatever”

Page 15: Controller in asp.net mvc

اولویت در مسیرهای تعریف شده

Page 16: Controller in asp.net mvc

RouteData

هایی که مسیریاب ایجاد می کندKey Valueمجموعه

و یا خود کنترلر مورد استفاده قرار می گیردmodel binderاین مجموعه توسط

Page 17: Controller in asp.net mvc

routes.MapRoute(

name: "Default",

url: "{controller}/{action}/{id}«

);

“product/index/3”

Variable value

controller Product

action Index

id 3

RouteData

Page 18: Controller in asp.net mvc

مقادیر پیش فرض

routes.MapRoute(

name: "Default",

url: "{controller}/{action}/{id}",

defaults: new { id=3 }

);

“product/index”

Variable Value

controller Product

action Index

Id 3

Page 19: Controller in asp.net mvc

مقادیر اختیاری

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

Page 20: Controller in asp.net mvc

Namespace در مسیریابی

Page 21: Controller in asp.net mvc

IgnoreRoute

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

Page 22: Controller in asp.net mvc

404

Page 23: Controller in asp.net mvc

فیلتردستکاری کد

Page 24: Controller in asp.net mvc

چیستفیلتر عد از قبل یا ب، یک کالس سفارشی است که شما می توانید منطق برنامه را جهت اجرا، فیلتر

. در آن پیاده سازی نمایید، Actionیک اجرای

Page 25: Controller in asp.net mvc

شودفیلتر چگونه معرفی می به روشAttribute بر رویAction ها یاControllerها

بصورت سراسری

Page 26: Controller in asp.net mvc

attributeاستفاده به شکل

[HandleError] [Authorize]public class CourseController : Controller{

[OutputCache][RequireHttps]public ActionResult Net( string name ){

ViewBag.Course = BL.GetCourse(name);return View();

}}

Page 27: Controller in asp.net mvc

Global.asaxبصورت سراسری در فایل معرفی

GobalFilters.Filters.Add(new AuthorizationFilterA() { Order = 2});

Page 28: Controller in asp.net mvc

فیلترهاانواع و اولویت

.1Authorization filters: نوع فیلترها پیش از اجرای هر متد یا فیلتر دیگری در این

. کنترلر جاری اجرا شده و امکان لغو اجرای آن را فراهم می کنند

.2Action filters : متدهای کنترلر جاری اجرا می شوند و همچنین پیش اجرای پس از و پیش

را تحت کنترل Viewبه این ترتیب برای مثال می توان نحوه رندر یک . از ارائه خروجی نهایی متدها

گرفت

.3Result filters : بسیار شبیه بهActionFilter ازاست با این تفاوت که تنها پیش

اجرای متد، فراخوانی می گرددازبازگرداندن نتیجه متد و همچنین پس

.4Exception filters : پس از اجرای تمامی فیلترهای دیگر، همواره اجرا خواهند شد؛

صرفنظر از اینکه آیا در این بین استثنایی رخ داده است یا خیر

Page 29: Controller in asp.net mvc

فیلترهای هم نوعاولویت در public class HomeController : Controller

{

[AuthorizationFilterA(Order = 2)]

[AuthorizationFilterB(Order = 1)]

public ActionResult Index()

{

return View();

}

}

Page 30: Controller in asp.net mvc

ترتیب اجرا

Page 31: Controller in asp.net mvc

فیلتر های دلخواه

Page 32: Controller in asp.net mvc

نحوه افزودن فیلتر دلخواهپیاده سازی اینترفیس یکی از انواع فیلترها و ارث بری از کالس :روش اولFilterAttribute

ارث بری از :روش دومActionFilterAttribute

پیاده سازی داخل کنترلر:روش سوم

ارث بری از کالس فیلترهای توکار و مهیای در :روش چهارمMVCو تحریف متدهای آن

Page 33: Controller in asp.net mvc
Page 34: Controller in asp.net mvc

Authorization Filter

Page 35: Controller in asp.net mvc

Action Filter

Page 36: Controller in asp.net mvc

Result Filter

Page 37: Controller in asp.net mvc

Exception Filter

Page 38: Controller in asp.net mvc

مثال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;

}}

}

Page 39: Controller in asp.net mvc

Area

نظم بخشی به کد

Page 40: Controller in asp.net mvc

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 }

);

}

}

Page 41: Controller in asp.net mvc

Areas

AreaRegistration.RegisterAllAreas();

RouteConfig.RegisterRoutes(RouteTable.Routes);