در دنباله نوشته های فایل های نما و عبارت های Razor در ASP.NET Core MVC در این نوشته می خواهیم درباره عبارت های شرطی if@…else و if@ … else if … else و switch@ بگوییم. در کد زیر نخست درون {}@ یک متغیر به نام b با مقدار true نوشته شده است. سپس به کمک عبارت if@ … else بررسی می شود که آیا مقدار b برابر با true هست یا نه، که اینگونه است و از این رو نخستین تگ <p>  در مرورگر نشان داده می شود. توجه کنید تنها در آغاز if کاراکتر @ نوشته شده است.

در کد زیر نیز یک متغیر به نام size شناسانده (تعریف) شده است که دارای مقدار 50 است. سپس به کمک عبارت if@ … else if … else بررسی می شود که آیا مقدار آن کمتر یا برابر یا بیشتر از ۵۰ باشد و در هر یک، پیغامی نشان داده می شود. توجه کنید این کد و کد بالایی درون فایل نما و درون بخشی به نام main، نوشته شده اند.

بررسی بودن یک کلید ویژه در ViewData

گفتیم ViewData یک دیکشنری است که هر کلیدی که به آن می دهیم، در فایل نما می تواند همانند یک متغیر باشد که می خواهیم مقدار آن ا نمایش دهیم. در کد زیر متد ()Index از کلاس User بازنویسی شده است. همانگونه که ممی بینید این بار عنوان صفحه وب، [“ViewData[“Title@ در خود متد ()Index نوشته شده است ولی در نوشته های پیشین در فایل نما شناسانده (تعریف) می شد. همچنین کلید دیگری به نام Name را برای ViewData ساخته ایم که مقدار Amir را در خود دارد.

کدهای زیر درون مایه فایل نما Index.cshtml را نشان می دهد که در آن دو عبارت if@ … else تو در تو نوشته شده است. در if@ نخستین، به کمک متد  از ViewData بررسی می شود که آیا کلیدی به نام Name در ViewData هست یا نه؟ اگر باشد، پس دومین if@ (درونی) انجام می شود وگرنه یک تگ <p> در بند (خط) ۱۳ چاپ می شود.

دومین if به کمک null =! بررسی می کند که آیا مقداری برای کلید Name در ViewData فراهم شده است یا نه؟ اگر اینگونه باشد، پس مقدار آن به کمک تگ <p> بند ۶ نشان داده می شود وگرنه یک پیغام خطا در خط ۸ نشان داده خواهد شد. کد زیر همه درون مایه فایل نما را نشان می دهد.

بنابراین متد ()ContainsKey از ViewData یک رشته را دریافت و بررسی می کند که آیا این رشته یکی از کلیدهای درون ViewData هست یا نه؟ اگر باشد مقدار true برگشت داده خواهد شد. همچنین ViewData همانند ViewBag دارای یک ویژگی به نام Count است که شمار (تعداد) آیتم های ViewData را برکشت می دهد.

عبارت switch@

عبارت switch از دید برنامه نویسی همانند چندین عبارت esle if پشت سر هم است. در کد زیر نخست یک متغیر رشته ای به نام status ساخته شده است و سپس درون عبارت switch@ و در پیش روی عبارت های case حالت های گوناگون بررسی شده است. اگر مقدار status برابر با رشته development باشد و یا اگر مقدار آن برابر staging باشد، پیغام های مناسبی نشان داده می شوند. حالتی که هیچ یک از این دو نباشد، با default مشخص می شود. در واقع هر چیزی جر development و staging در متغیر status برابر با پیغام پس از عبارت default خواهد بود.

دقت کنید که خود عبارت switch و بدون @ درون یک {}@ نوشته شده است.

در کد زیر می خواهیم چگونگی به کارگیری عبارت های دارای عملگرهای مقایسه ای مانند برابری و کوچکتر یا بزرگتر در پیش روی عبارت case را نشان دهیم. در آغاز یک متغیر به نام size با شماره 73 نوشته ایم، پس در پیش روی دو عبارت case و پس از عبارت when بررسی می کنیم که آیا مقدار آن کمتر از ۵۰ یا برابر با ۵۰ هست یا نه؟ اگر اینگونه نباشد، پس بیشتر از ۵۰ بوده و پیغام درون عبارت default نشان داده می شود.

همچنین در این دو کد عبارت switch می توانید ببینید که برای نوشتن Comment ها در فایل های نما می توان از شیوه HTML یعنی، . <–  YOUR_COMMENT –!> کمک بگیریم.