به سایت ما خوش آمدید . امیدوارم لحظات خوشی را درسایت ما سپری نمایید .

خوش آمدید

هر گونه نظر و پیشنهاد و انتقادی داشتید، در قسمت نظرات اعلام کنید.

2 سال پيش مايكروسافت ASP.NET MVC را ارائه كرد، خيلي‌ها معتقد بودند كه با ارائه MVC دوران WebForm‌هاي ASP.NET تمام نشده ‌است، اما گذشت زمان عكس اين نظريه را ثابت كرد، مايكروسافت در نسخه نهايي .NET4.0 خود تغيير عمده‌اي نداد ولي در همين فاصله زماني 3 نسخه از MVC را منتشر كرد! اين گمان كماكان در ذهن خيلي از برنامه‌نويسان است كه ديگر عصر WebFormها فرا رسيده، همان بلايي كه بر سر Windows Form‌ها آمد و ديگر توسعه خاصي در آنها صورت نگرفت ولي به جاي آن WPF روز به روز رشد كرد.

در اين مقاله قصد داريم يكي از ويژگي‌هاي جديد نسخه 3م از ASP.NET MVC را معرفي كنيم، ويژگي‌اي كه مي‌توان گفت يكي از بهترين و كاربردي‌ترين‌ها براي برنامه‌نويسان ASP.NET است. اين ويژگي Razor Syntax نام دارد. اين ويژگي علاوه بر پايين آوردن كد‌هاي نوشته شده براي يك صفحه، يك كد تميزتر نسبت به ASP.NET Syntax ارائه مي‌دهد. به آن بخشي كه در رندر كردن صفحات استفاده مي‌شود View Engine مي‌گويند. Razor يك View Engine جديد براي رندر كردن صفحات سمت سرور در ASP.NET است.

 

اين گرامر به شما اجازه مي‌دهد هم كد HTML براي توليد قالب صفحه و هم كد سمت سرور را به صورت تودرتو در كنار هم داشته باشيد! يعني نيازي نيست هميشه مانند ASP.NET View Engine براي هر قطعه كد سمت سرور از «% %» استفاده كنيد. يك نمونه كد از اين گرامر را مي‌بينيم و در مورد آن بيشتر توضيح مي‌دهيم.

«ul»

@foreach (BlogModels.Post post in Model) {

«li»

«h2»@post.Title.«/h2»

«br /»

«h3»

«ul»

@foreach (BlogModels.Comment comment in post.Comments) {

«li»@comment.Text.«/li»

}

«/ul»

«/h3»

«/li»

}

«/ul»

همان طور كه در كد بالا مشخص است مي‌توانيد به راحتي كد سمت سرور و كد HTML مورد نظر را در يك قطعه كد بنويسيد و خود View Engine عمل تشخيص را انجام مي‌دهد. نكته قابل توجه در كد بالا خط 4م است بعد از post.Title@ يك نقطه گذاشته شده، خود View Engine تشخيص مي‌دهد كه اين نقطه جزئي از كد سمت سرور است يا قرار است به صورت يك متن در html توليد شده وجود داشته باشد. در اين View Engine ديگر خبري از هدر‌هاي صفحات asp.net نيست! ديگر براي استفاده از مسترپيج نيازي نيست كه يك سري ContentPlaceHolder قرار دهيد يا در خود صفحه مسترپيج صراحتا اعلام كنيد كه محتواي صفحه كه قرار است تكرار شود چي هست و محتواي اختصاصي در كجا قرار دارد. براي اين كار كافي است تابع RenderBody را فراخواني كنيد. براي مثال دو قطعه كد زير را مقايسه كنيد:

«asp:Content ID=Content2 ContentPlaceHolderID=»MainContent runat»=»server»»

«/asp:Content»

«div id=main»

@RenderBody()

«div id=footer»

«/div»

«/div»

اولي بر مبناي ASP.NET View Engine است و دومي با Razor View Engine، خب تفاوت‌ها كاملا مشخص هستند، مزيت اصلي Razor View Engine توليد كد خواناتر و تميزتر است و هر كسي با يك مقدار آشنايي با گرامر آن مي‌تواند يك صفحه View درست كند. بسيار خب قدري ويژگي‌هاي گرامري Razor را بررسي كنيم.

قطعه كد

 

در صفحات ASP.NET اگر مي‌خواستيد چند خط كد به زبان‌هاي C# يا VB بنويسيد بايد آنها را در تگ «% %» قرار مي‌داديد، اما در Razor آنها را در {}@ قرار مي‌دهيد. براي نمايش يك متغير كه در سمت سروراست در ASP.NET بايد آن را در «%: %» قرار دهيد، براي اين كه خودش عمل تبديل به داده خام HTML را انجام دهد از «%= %» استفاده مي‌كنيد، اما در Razor بايد از «variable»@ استفاده كنيد جاي «variable» هر چيزي مي‌توانيد قرار دهيد مثلا DateTime.Now يا متغيير xي كه در كد سمت سرور تعريف كرديد (x@) در Razor به صورت پيش فرض مقدار كد شده html نمايش داده خواهد شد و اگر بخواهيم به صورت خام نمايش داده شود بايد از متد‌هاي كمكي استفاده كنيم مثلا Html.Raw.

حلقه‌هاي تكرار

در حلقه‌هاي تكرار نياز است كه يك مقدار كد html به صورت تكراري در صفحه نمايش داده شود. مثلا فهرست آي‌تم‌هاي موجود در يك سبد خريد در ASP.NET به صورت زير است.

«% foreach(var item in items) {%»

«span»«%: item.Prop %»«/span»

 

همان طور كه مشاهده مي‌كنيد هر جايي كه نياز باشد كد سمت سرور باشد بايد از تگ‌هاي «% %» استفاده شود!

در Razor به صورت زير است:

@foreach(var item in items) {

«span»@item.Prop«/span»

}

 

مي‌بينيد ديگر نياز نيست مدام از تگ‌هاي «% %» استفاده كنيد!

دستورات كنترلي

اين دستورات هم مثل حلقه هستند، مثلا:

ASP.Net:

«% if (foo) { %»

Plain Text

«% } %»

Razor:

@if (foo) {

«text»Plain Text«/text»

}

كامنت‌ها:

ASP.NET

«%--

This is a server side

multiline comment

--%»

Razor:

@*

This is a server side

multiline comment

*@

در اين مقاله سعي شد مقدمه‌اي در مورد Razor View Engine و Razor Syntax‌ توضيح داده شود، اما براي مطالعه بيشتر آن مي‌توانيد از لينك‌هاي زير استفاده كنيد:

http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx

http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx

 

اميربهاءالدين سبط‌الشيخ

 

ادامه مطلب
پنج شنبه 17 فروردین 1391  - 9:09 AM

جستجو

آمار سایت

کل بازدید : 5826976
تعداد کل پست ها : 30564
تعداد کل نظرات : 1029
تاریخ ایجاد بلاگ : پنج شنبه 19 شهریور 1388 
آخرین بروز رسانی : دوشنبه 19 آذر 1397 

نویسندگان

ابوالفضل اقایی