VisualStuidioCommunity2015/Fw4.5.2/C#
前回に続いてRazorの構文を見ていきます。
「@using」で名前空間をインポート
Razorは標準でだいたいの名前空間をインポートしてくれますが、インポートされない名前空間は「@using」でインポートすることができます。
@using MyApp.MyExtensions;
@{
bool ret = string.Empty.MyExtensionMethod();
}
「@if」コードブロックで条件分岐
コードブロック内ではifを使用できますが、コードブロック外でifを使用したい場合は「@if」コードブロックを使用します。
@{ int num = new System.Random().Next(1, 10); }
@if (num % 2 == 0)
{
@:偶数
}
else
{
@:奇数
}
「@switch」コードブロックで条件分岐
@switch (num)
{
case 2:
@: numは2です。
break;
default:
@: numは2以外です。
break;
}
「@for」コードブロックで繰り返し処理
@{ int max = 10; }
@for (int i = 0; i < max; i++)
{
@i
}
「@foreach」コードブロックで繰り返し処理
@{ int[] nums = { 2, 4, 6 }; }
@foreach (int val in nums)
{
@val
}
「@while」コードブロックで繰り返し処理
@{ int counter = 1; }
@while (counter < 10 )
{
@counter
counter++;
}
「@functions」コードブロックでメソッドやプロパティを定義
「@functions」コードブロック内ではメソッドやプロパティを定義できます。
@functions
{
// メソッド定義
bool isEven(int num)
{
bool ret = false;
if (num % 2 == 0)
{
ret = true;
}
return ret;
}
//プロパティ定義
string _str = "Hello";
String Str
{
get { return _str + " World"; }
set { _str = value; }
}
}
8は偶数:@isEven(8)
プロパティの値:@_str / @Str
通常のコードブロック内でメソッドを定義したければ、匿名メソッド使えばよさそうです。
@{
Func<int, bool> isOdd = (val) =>
{
bool ret = false;
if (num % 2 != 0)
{
ret = true;
}
return ret;
};
}
8は奇数:@isOdd(8)
条件付きナゲット (ASP.NET MVC5 以降)
コードナゲットを属性に使用すると、式が「trueである」又は「nullでない」場合にのみ属性が生成されます。たとえば下記の例であれば、
式「styleRed」はnullではないので、style属性は出力されます。
式「styleNull」はnullなので、style属性自体が出力されません。
@{ string styleRed = "color:red"; }
style = color:red
@{ string styleNull = null; }
style = null
実行してソースの表示で出力されたHTMLを確認した結果です。style = color:red
style = null
0 件のコメント:
コメントを投稿