سینتکس (Razor Syntax)
در این صفحه سینتکس Razor را خیلی ساده می بینیم. «سینتکس Razor» یعنی قواعد نوشتن کد. Razor داخل HTML می نشیند و روی سرور اجرا می شود. سپس نتیجه آماده به مرورگر می رسد؛ مثل وقتی تکلیفت را تمیز می نویسی و تحویل می دهی.
قوانین اصلی سینتکس Razor
کدهای C# داخل @{ ... } می آیند. عبارات خطی با @ شروع می شوند. دستورات با ; تمام می شوند. رشته ها داخل "" هستند. فایل های C# پسوند .cshtml دارند و حساس به حروف هستند.
نمونه C#؛ بلوک، عبارت خطی، چنددستور
اول یک پیام می سازیم. سپس همان را نمایش می دهیم. بعد چند متغیر می سازیم و کنار هم می گذاریم.
<!-- Single statement block -->
@{
var myMessage = "Hello World";
}
<!-- Inline expression or variable -->
<p>The value of myMessage is: @myMessage</p>
<!-- Multi-statement block -->
@{
var greeting = "Welcome to our site!";
var weekDay = DateTime.Now.DayOfWeek;
var greetingMessage = greeting + " Here in Huston it is: " + weekDay;
}
<p>The greeting is: @greetingMessage</p>
نمونه VB؛ کد بین @Code تا End Code
در VB حساسیت حروف مهم نیست. متغیر با Dim ساخته می شود. ساختار کلی ساده است.
<!-- Single statement block -->
@Code
Dim myMessage = "Hello World"
End Code
<!-- Inline expression or variable -->
<p>The value of myMessage is: @myMessage</p>
<!-- Multi-statement block -->
@Code
Dim greeting = "Welcome to our site!"
Dim weekDay = DateTime.Now.DayOfWeek
Dim greetingMessage = greeting & " Here in Huston it is: " & weekDay
End Code
<p>The greeting is: @greetingMessage</p>
کار با شیءها و DateTime
«شیء (Object)» یک چیز با ویژگی و متد است؛ مثل دانش آموز با نام و معدل. این جدول چند ویژگی زمان را نشان می دهد.
<table border="1">
<tr>
<th width="100px">Name</th>
<td width="100px">Value</td>
</tr>
<tr>
<td>Day</td>
<td>@DateTime.Now.Day</td>
</tr>
<tr>
<td>Hour</td>
<td>@DateTime.Now.Hour</td>
</tr>
<tr>
<td>Minute</td>
<td>@DateTime.Now.Minute</td>
</tr>
<tr>
<td>Second</td>
<td>@DateTime.Now.Second</td>
</tr>
</table>
شرط ها با if و else
با شرط تصمیم می گیریم چه چیزی نشان دهیم. مثل اگر ساعت مدرسه گذشته بود، پیام عصر بفرست.
@{
var txt = "";
if (DateTime.Now.Hour > 12)
{
txt = "Good Evening";
}
else
{
txt = "Good Morning";
}
}
<html>
<body>
<p>The message is @txt</p>
</body>
</html>
خواندن ورودی کاربر با Request و IsPost
وقتی فرم ارسال شود، IsPost درست می شود. سپس با Request مقدارها را می خوانیم و جمع می زنیم.
@{
var totalMessage = "";
if (IsPost)
{
var num1 = Request["text1"];
var num2 = Request["text2"];
var total = num1.AsInt() + num2.AsInt();
totalMessage = "Total = " + total;
}
}
<html>
<body style="background-color: beige; font-family: Verdana, Arial;">
<form action="" method="post">
<p><label for="text1">First Number:</label><br><input type="text" name="text1" /></p>
<p><label for="text2">Second Number:</label><br><input type="text" name="text2" /></p>
<p><input type="submit" value=" Add " /></p>
</form>
<p>@totalMessage</p>
</body>
</html>
گام های عملی سریع
- یک فایل .cshtml بساز و یک بلوک @{ } اضافه کن.
- یک متغیر و یک عبارت خطی @ بگذار و خروجی بگیر.
- یک فرم ساده بساز و با IsPost جمع را نمایش بده.
نکته: برای مقدمه و مقایسه سینتکس Razor با مفاهیم پایه، صفحه معرفی را ببین.
هشدار: ورودی ها را اعتبارسنجی کن و از HTML خام کاربر دوری کن.
جمع بندی سریع
- @ برای عبارات خطی است.
- @{ } برای چند دستور است.
- فایل های C#، پسوند cshtml دارند.
- IsPost یعنی فرم ارسال شده است.