<!-- ファイルのデフォルトはHTML。 -->
<div></div>
@{
// コード(C#/VB)を書くときは@{}(コードブロック)の中へ。
// コードブロック内の記述はHTMLにレンダリングされない。
}
<!-- 制御構造はコードブロックの一種(拡張)。(更にブロックで囲む必要は無い) -->
@if (){
....
}
@foreach(var item in items){
// コードブロック内なのでここではifの前に@は不要
// 実際のコードではLINQでitemsを絞り込むのでこんな使い方はしないでしょうが…
if (!item.Discontinued){
// コードブロック内にいきなりタグを書くことができる
// HTMLとしてレンダリングされるようになる
<div>
<!-- HTML内にコードを書く時は@を付けてC#(Razor式)に移行 -->
<!-- {}で囲まないRazor式はコードブロックと異なりレンダリングされる -->
<div>@item.Name</div>
<div>@item.Price円</div><!-- エラー。Price円が見つからない -->
<div>@item.Price 円</div><!-- 半角スペースを入れると大丈夫 -->
<div>@item.Price<span>円</span></div><!-- どちらかをタグで囲むか -->
<div>@(item.Price)円</div><!-- ()を使って明示的なRazor式に -->
<div>@(item.Price - 100)円</div><!-- こんな時も()を付けて明示的に -->
</div>
<!-- タグで囲む必要は無いけれど、レンダリングしたい時は<text>タグで囲む -->
<text>@item.Note</text>
}
}
@using(Html.BeginForm()){
<input type="submit">
}
@ITのように@マークを表示したい場合は@@というように@マークを2つ続けると1つだけ表示されます。
ただしhoge@sample.jpのようにメールアドレスのパターンにマッチする場合はエスケープ不要です。
Razorの予約語 | page | ASP.NET Core 2.0以降 |
namespace |
functions |
inherits |
inject | @inject | ビューに依存性の注入を行う |
model | @model |
section | @section | layoutビューとの紐付けに利用 |
helper |
C#の予約語 | case |
do |
default |
for |
foreach |
if |
case |
lock |
switch |
try |
catch |
finally |
using |
while |
class |