ASP.NET MVC آموزش c# برنامه نویسی

مفهوم کنترلر در MVC ASP.NET چیست؟

امیرحسین عراقی
نوشته شده توسط امیرحسین عراقی

آشنایی با کنترلر

همان طور که در پست های قبل توضیح داده شد MVC الگویی برای توسعه برنامه های کاربردی است. این الگو از سه بخش تشکیل شده است. بخشی که تصمیم گیری ها و منطق نرم افزار در آن نوشته میشود قسمت کنترلر است. در این فصل مباحث مربوط به بخش کنترلر را با تمرین هایی آموزش خواهیم داد. ابتدا به سراغ ساخت یک کنترلر در برنامه رفته و مراحل ایجاد آن را توضیح خواهیم داد. برای این منظور
١- ابتدا به سراغ پنجره Solution Explorer رفته و روی پوشه کنترلر راست کلیک کنید. سپس از منوی ظاهر شده گزینه Add و سپس کنترلر را انتخاب کنید تا کلاس کنترلر در برنامه ایجاد شود.

2 –  گزینه Add Empty  را از پنجره ی Add Scaffold انتخاب می کنیم

add controller

3- نام آن را مانند زیر عوض می کنیم توجه کنیم که نام باید در انتها کلمه Controller  را حتما داشته باشد مانند HelloWorldController  مثل زیر

add controller

پس از مراحل بالا کلاسی با پسوند cs  در فلدر Controllers ایجاد می شود و همزمان با ایجاد کنترلر  پوشه ای با همین نام نیز در مسیر Views\HelloWorld برنامه ایجاد می شود.
برای شروع کار با این کلاس، ابتدا محتویات کلاس HelloWorldController.cs را حذف و به جای آن، دستورات ذیل را جایگزین کدهای قبلی کنید.

قالب آدرس دهی در MVC

قالب آدرس دهی در MVC به صورت زیر تعریف می شود:

[Controller]/[Action Name]/[Parameters]/

کنترلر: ممکن است یک برنامه از تعدادی کنترلر تشکیل شود. اولین بخش مشخص کننده کنترل اجرایی می باشد.در این بخش کنترلر ای که بخواهد اجرا شود مشخص می شود. بنابراین در مثال بالا کليه HelloWorld به کنترلر مربوطه اشاره می کند.
Action Name: هر کنترلر نیز ممکن است از تعدادی متد تشکیل شود. بخش دوم نیز مشخص کننده متد اجرایی می باشد. به این متد رویداد نیز گفته می شود.

نکته: در صورتی که تنها بخش اول آدرس (قسمت کنترلر) انتخاب شود و قسمت های دیگر مانند Action Name انتخاب نشود به طور پیش فرض متد Index موجود در کنترلر مشخص شده اجرا می شود. همانطور که مشاهده می کنید آدرس بالا تنها از بخش کنترلر تشکیل شده است بنابراین متد Index این کلاس به طور پیش فرض اجرا خواهد شد. برای بررسی آدرس ها در نوار آدرس مرورگر وب آدرس زیر را وارد کنید:

http://localhost:xxxx/HelloWorld/Welcome

آدرس بالا باعث اجرا شدن متد Welcome میشود. خروجی این متد از نوع رشته تعریف شده است. همانطور که در شکل زیر مشخص شده است رشته .This is the Welcome Controller method به عنوان خروجی نشان داده شده است.

Parameters: در صورتی که پارامتری برای متد بخواهد ارسال شود در این بخش آدرس مشخص خواهد شد. برای بررسی این نوع آدرس دهی ابتدا دستورات زیر را جایگزین متد Welcome کنید:

حال متد Welcome را بار دیگر تغییر داده و دستورات زیر را جایگزین کدهای قبلی کنید. در این مثال قصد داریم تا نحوه مقدار دهی پارامترها را تغییر دهیم.

public string Welcome(string name, int ID = 1){
return HttpUtility.HtmlEncode(Hello ، + name + , ID: ،، + ID);
}

حال برنامه را با آدرس زیر اجرا کنید:

HTTP://localhost:xXx/HelloWorld/Welcome/3?name=Rick

همانطور که در آدرس بالا مشخص شده است مقدار ۳ برای پارامتر ID بدون در نظر گرفتن ID در نظر گرفته شده است. اگر برنامه را اجرا کنید برنامه به درستی اجرا شده و همانند شکل ، مقدار ۳ برای پارامتر ID مقداردهی می شود.

اگر به سراغ متد RegisterRoutes بروید، نحوه تعریف این نوع آدرس دهی در آن مشخص شده است.

برنامه قرار گرفته است. App _ Start/RouteConfig.cs این متد در مسیر

public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute(‘‘{resource} .axd/{* pathInfo}");
routes.MapRoute(
name: Default'
, url: {controller}{action} {id} ",
defaults: new { controller = "Home", action = Index", id = UrlParameter.Optional }
}

</code></pre>

همانطور که در قسمت بالا مشخص شده است در قسمت URL و در بخش انتهایی آدری، ع {id} قرار گرفته است. این کار این امکان را در اختیار کاربر قرار می دهد که پارامتر ID را بدون مشخص کردن نام ID در بخش آدرس مقدار دهی کند و تنها با قرار دادن آدرس

http://localhost:xxx/Helloworld/Welcome3

پارامتر ID برابر با مقدار ۳ مقداردهی گردد.
در این قسمت می خواهیم پارامتر name را نیز مانند روش آدرس دهی بالا از طریق مسیر آدرس مقدار دهی کنیم. برای این منظور:

ابتدا به سراغ کلاس RouteConfig رفته و دستورات مسیر جدید Hello را به متد  RegisterRoutes اضافه کنید.

public class RouteConfig
	{
		public static void RegisterRoutes(RouteCollection routes)
		{
	
		routes.IgnoreRoute( {resource} .axd/ { *pathInfo}");

		routes.MapRoute( name: Default',
		url:{controller}/{action}/{id}",
		defaults: new controller = "Home", action = Index", id =
		UrlParameter.Optional);
		
		routes.MapRoute( name: “Hello",
		url:
		{controller}/{action}/{name}/{id}"
		);

		}
	}

 

همانطور که در دستورات بالا مشخص شده است برای آدرس دهی به روش جدید کافی است که در قست Url نام پارامتر را به صورت مشخص شده به آدرس اضافه کنید. حال اگر برنامه را با آدرس

localhost : ccc /HelloWorld/welcome/Scott/3

اجرا کنید. پارامترهای name و id متد welcome با مقادير Scott و ۳ مقداردهی می شوند .برای بسیاری از برنامه های MVC مسیر پیش فرض برنامه مناسب می باشد و نیازی به تغییر این مسیر نمی باشد.

[تعداد رای:1]

درباره نویسنده

امیرحسین عراقی

امیرحسین عراقی

درج دیدگاه