Controller in asp.net mvc

Post on 16-Apr-2017

119 views 0 download

Transcript of Controller in asp.net mvc

Controllerرضا رحیمی

95تابستان

Rtwo.ir

هدف بحثآشنایی با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);