C# Razor�\�� ��b���@ ���܂Ƃ�

�f�W�^���A�h�o���e�[�W�@��F ���F
2011/10/18

��0. �܂�����

�@�{�e�ł́A�uRazor�\���iC#�j�v�ɂ‚��Ă̊�b���@���Ȍ��ɂ܂Ƃ߂�B�uRazor�\���A�ǂ������񂾂����H�v�Ƃ����ꍇ�̃��t�@�����X�Ƃ��Ċ��p���Ă���������Ƃ��ꂵ���i�Ȃ��A�{�e�̓G�b�Z���X����������Ă��炸�A���ׂĂ��w�ׂ�킯�ł͂Ȃ��̂ŁA��������w�Ԃɂ́u�A�ځFASP.NET MVC����y�o�[�W����3�Ή��z�@��5�� �V�����r���[�E�G���W���uRazor�v�̊�{�𗝉����悤�v���Q�Ƃ��Ăق����j�B

��1. Razor�\���iC#�j�̊T�v

��Razor�\���Ƃ͉����H

�@Razor�\���iRazor syntax�j�Ƃ́AASP.NET MVC��iWebMatrix�ō̗p����Ă���jASP.NET Web�y�[�W�Ȃǂ�Web�J���Z�p�p�̃r���[�E�G���W����1�‚ł���uRazor�r���[�E�G���W���v�����̕��@�̂��ƂŁAC#����i.cshtml�t�@�C���j�p��Visual Basic����i.vbhtml�t�@�C���j�p��2��ނ�����B

�@���̍\���́A�N���V�b�NASP�iActive Server Pages�j�ɋ߂��A�uHTML�y�[�W����Razor�\���ŃR�[�h�𖄂ߍ��ށv�Ƃ����J���X�^�C���ł���BASP.NET Web�t�H�[���̃R�[�h�E�i�Q�b�g�i���u<% ... %>�v�Ƃ����\���Ńv���O���~���O�E�R�[�h�𖄂ߍ��ޕ��@�j�Ɣ�ׂāA�^�C�v�ʂ����Ȃ��A�V���v���ȋL�q�ƂȂ�̂��������B

�y�R�����zRazor�\������y�Ɏ�����T�[�r�X

�@Razor�\���̋������m���߂����Ƃ��ɂ́A�uRazor Do It�v�Ƃ���Web��̃T�[�r�X���֗����B��̓I�ɂ́A�ȉ��̉�ʂ��Q�Ƃ��ꂽ���B

�mTitle�n���ɍ���̓��͓��e��\���^�C�g������͂���
�mRazor�n����Razor�R�[�h�i���̗�ł́[email protected]�v�j���܂�HTML�R�[�h����͂��A
�R���{�{�b�N�X����ucshtml�v�i��C#�j��I�����āA
�mExecute�n�{�^�����N���b�N����

Razor�r���[�E�G���W���ɂ�菈�����ꂽ���ʂ��\�������
�i���̗�ł́[email protected]�v���u2011/09/28 16:23:51�v�ɕϊ������j
�uRazor Do It�v�̃T�C�g

��2. Razor�\���iC#�j�̊�b���@

���C�����C�����F�P��̃v���p�e�B�^���\�b�h�^�t�B�[���h�ϐ��̒l�̏o��

�@Razor�\���ŁA���\�b�h��v���p�e�B�A�t�B�[���h�ϐ��Ȃǂ̒l���AHTML�R�[�h�Ƃ��ē��I�ɏo�͂������ꍇ�ɂ́A�����̐擪�Ɂu@�v��t���邾���ł���B

�@���̂悤�ȃC�����C�����̏I���ʒu�́AC#�ɂ����鎯�ʎq���Ƃ��Ďg���Ȃ������̏o���ɂ���Č��܂�i���p�^�S�p�X�y�[�X��u:�v�Ȃǂ́A�u�p�����E���{�ꕶ���v�ȊO�̕����̂قƂ�ǂ���؂�ƂȂ�B�u.���p�������v��u[�v�Ȃǂ̓C�����C�����̈ꕔ�ƌ��Ȃ����j�B�‚܂艺�L�̃R�[�h��ł́A�u<�v�Ŏn�܂�HTML�^�O�̑O�܂ł�C#�R�[�h�ƂȂ�B

<p>�v���p�e�B�F@DateTime.Now</p>
<p>���\�b�h�F  @DateTime.Now.ToLongDateString() ���X�y�[�X�ŏI��</p>
<p>�t�B�[���h�F@DateTime.MaxValue�F���S�p�R�����ŃR�[�h�I��</p>
�C�����C����

�@�����̃g�[�N����g�ݍ��킹��1�‚̃C�����C�����Ƃ��邱�Ƃ��ł���B���̏ꍇ�A���L�̂悤�Ɂu@(�v�Ŏ��u���b�N���J�n���āA�u)�v�ŏI������B

<p>@("���݂̎����F" + DateTime.Now)</p>
�����̃g�[�N���ō\�����ꂽ�C�����C����

���R�[�h�E�u���b�N�F�����̕�����Ȃ�u���b�N�̋L�q

�@�����̕��ō\�������R�[�h�E�u���b�N���L�q�������ꍇ�́A���L�̂悤�Ɂu@{�v�ŃR�[�h�E�u���b�N���J�n���āA�u}�v�ŏI������B

@{
  int year = DateTime.Now.Year;
  string msg = (DateTime.IsLeapYear(year)) ? "���邤�N" : "���N";
}
�R�[�h�E�u���b�N

�@�R�[�h�E�u���b�N���̕ϐ��i��L�̗�ł́uyear�v��umsg�v�j�́A�㑱�̃C�����C�����������̓R�[�h�E�u���b�N���Ŏg�p�ł���i���̃R�[�h�͂��̗�ł���j�B

<p>�R�[�h�E�u���b�N���̕ϐ����A��q�̃C�����C�����ŏo�́F@msg</p>
�R�[�h�E�u���b�N���̕ϐ����A��q�̃C�����C�����^�R�[�h�E�u���b�N���Ŏg�p

���R�[�h�E�u���b�N���ł̕ϐ��╶����̏o��

�@��L�̗�ł́A�R�[�h�E�u���b�N���̕ϐ���ʂ̃C�����C�����ŏo�͂��Ă��邪�A�����R�[�h�E�u���b�N�̒�������o�͂ł���B��̓I�ɂ͉��L�̂悤�ɁAHTML�^�O�i�Ⴆ�΁u<p>�`</p>�v�Ȃǁj�ň͂񂾃u���b�N���ɁA�C�����C������R�[�h�E�u���b�N�Ȃǂ��܂�HTML�R�[�h���L�q����΂悢�B

@{
  string msg = DateTime.Now.ToLongDateString();
  <p>�R�[�h�E�u���b�N���̕ϐ����AHTML�^�O�t���ŏo�́F@msg</p>
}
HTML�^�O�ɂ��A�R�[�h�E�u���b�N���ŕ�����ƕϐ����o��

�@�O���HTML�^�O���܂߂����Ȃ��ꍇ�ɂ́A�u<text>�`</text>�v�^�O�ň͂񂾃u���b�N���ɁA�C�����C������R�[�h�E�u���b�N�Ȃǂ��܂�HTML�R�[�h���L�q����B

@{
  string msg = DateTime.Now.ToLongDateString();
  <text>�R�[�h�E�u���b�N���̕ϐ����Atext�^�O�ŏo�́F@msg</text>
}
<text>�^�O�ɂ��A�R�[�h�E�u���b�N���ŕ�����ƕϐ����o��

�@�u<text>�`</text>�v�^�O�ɂ͕����s��HTML�R�[�h���L�q�ł��邪�A�P�ɕ������1�s�o�͂������ꍇ�ɂ́A�����ƃV���v���ɋL�q�ł���B��̓I�ɂ́A�u@:�v�Ŏn�߂�1�s��HTML�R�[�h���L�q����B

@{
  string msg = DateTime.Now.ToLongDateString();
  @:����1�s���A���̂܂܏o�͂����B<br>�ϐ����g����F@msg
}
�u@:�v�ɂ��A�R�[�h�E�u���b�N����1�s�̕�����ƕϐ����o��

���R�����g

�@Razor�\����HTML�R�[�h���ɁA�ŏI�I��HTML�R�[�h�ɂ͏o�͂���Ȃ��R�����g���܂߂����ꍇ�A���L�̂悤�Ɂu@*�v�ŃR�����g�E�u���b�N���J�n���āA�u*@�v�ŏI������B

@* ���̕����̓R�����g�ɂȂ� *@
@*
  ���R�A�����s�ŋL�q���邱�Ƃ��ł���
*@
HTML�R�[�h���ł̃R�����g

�@���̃R�����g�L�q���@�́A�R�[�h�E�u���b�N���ł��L�����B

@{
  @* ���̕����̓R�����g�ɂȂ� *@
  // ���R�AC#�̃R�����g���g����
  /* C#�ɂ����镡���s�̃R�����g */
}
�R�[�h�E�u���b�N�ł̃R�����g

���u@�v�̃G�X�P�[�v����

�@�����܂ł̐����ǂ���ARazor�\���́u@�v��擪�Ɏg�������@���̗p���Ă���B�]���āAHTML�R�[�h���Łu@�v�Ŏn�܂�e�L�X�g���L�q����ꍇ�A���̐擪�́u@�v����F������Ȃ��悤�ɃG�X�P�[�v�������s���K�v������B����́A���̃R�[�h��̂悤�Ɂu@�v��2�˜A�����ċL�q����B

<p>@@isshiki���Ƀc�C�[�g���Ă��������B</p>
�u@�v�̃G�X�P�[�v�����i�u@isshiki�c�c�v���G�X�P�[�v��������R�[�h��j

�����O��Ԃ̃C���|�[�g

�@Razor�G���W���ł͑唼�̖��O��Ԃ��f�t�H���g�ŃC���|�[�g���Ă���邪�A�����ŃC���|�[�g����Ă��Ȃ����O��Ԃ̃N���X�𗘗p����ɂ́A���̃R�[�h��̂悤�Ɂu@using �����O��ԁ��v���L�q����B

@using System.Text.RegularExpressions;
@{
  string str= "����ɂ���";
  if (Regex.IsMatch(str, @"^\p{IsHiragana}*$"))
  {
    @:�S���A�Ђ炪�Ȃł��B
  }
  else
  {
    @:�Ђ炪�Ȃł͂Ȃ��������܂܂�Ă��܂��B
  }
}
���O��Ԃ̃C���|�[�g�iRegex�N���X���g�����߂ɁASystem.Text.RegularExpressions���O��Ԃ��C���|�[�g���Ă���j

����������

�@�R�[�h�E�u���b�N�̒���C#�̏������򎮁iif����switch���Ȃǁj�𗘗p�ł��邪�A��������݂̂̃V���v����C#�R�[�h���L�q�������ꍇ�ɂ́ARazor�\����if�R�[�h�E�u���b�N��switch�R�[�h�E�u���b�N���g�p���邱�Ƃ��ł���i���̃R�[�h���Q�Ɓj�B

@* if�R�[�h�E�u���b�N *@
@{int num = 1;}
@if (num > 0) {
  <p>���̐�</p>
} else if (num == 0) {
  <p>0</p>
} else {
  <p>���̐�</p>
}

@* switch�R�[�h�E�u���b�N *@
@{int i = 1;}
@switch (i) {
  case 1:
    <p>�u1�v�ł��B</p>
    break;
  default:
    <p>�u1�v�ȊO�ł��B</p>
    break;
}
��������

���J��Ԃ�����

�@Razor�\���ł́A�������򂾂��łȂ��A�J��Ԃ������p��for�R�[�h�E�u���b�N��foreach�R�[�h�E�u���b�N�Awhile�R�[�h�E�u���b�N�����p�ł���i���̃R�[�h���Q�Ɓj�B

@* for�R�[�h�E�u���b�N *@
@for (int i = 0; i < 3; i++) {
  <p>for���̃��[�v�́u@i�v��ڂł��B</p>
}

@* foreach�R�[�h�E�u���b�N *@
@{int[] items = {1,2,3};}
@foreach (var item in items) {
  <p>foreach���̃��[�v�ŏ��������•ʍ��ڂ̒l�́u@item�v�ł��B</p>
}

@* while�R�[�h�E�u���b�N *@
@{var j = 0;}
@while (j < 3) {
  <p>for���̃��[�v�́u@j�v��ڂł��B</p>
  j++;
}
�J��Ԃ�����

���֐�

�@Razor�\���ł́A�C�����C������R�[�h�E�u���b�N�ŌĂяo�����\�b�h��v���p�e�B���`���邽�߂�functions�R�[�h�E�u���b�N�i���֐��j���g�p�ł���i���̃R�[�h���Q�Ɓj�B

@functions {

  // ���\�b�h�̒�`
  int Sum(int a, int b)
  {
    return a + b;
  }

  // �v���p�e�B�̒�`
  int _num = 0;
  int Num
  {
    get
    {
      return _num;
    }
    set
    {
      _num = value;
    }
  }
}

<p>�P�{�Q�� @Sum(1, 2)</p>
<p>�v���p�e�B�̒l�F @Num</p>
�֐�

�����̂ق��̏d�v��Razor�\���̋@�\�F���C�A�E�g�^�w���p�[

�@Razor�\�����g�������ʼn������Ă��������@�\�������‚�����̂ŁA�Ō�ɊȒP�ɏЉ��B

�@1�‚́A���ʂ̃T�C�g�E�e���v���[�g���`�ł���u���C�A�E�g�E�y�[�W�v�ł���B�ڂ����́A�u�gRazor�h�̏Љ� �| ASP.NET�����V�r���[�E�G���W�� �| ��IT�v�́u���C�A�E�g�^�}�X�^�[�y�[�W�̃V�i���I �| ��b�v�̐߂��Q�Ƃ��ꂽ���B

�@����1�‚́AWeb�A�v���P�[�V�����ɂ��܂��܂ȋ@�\��t�����Ă����u�w���p�[�v�ł���B�ڂ����́uRazor�r���[�E�G���W���ƃw���p�[�A������WebMatrix�̓o�� �| ��IT�v�́uNuGet�ƃw���p�[�E���C�u�����̊��p�v�̐߂�A�u��5��@�V�����r���[�E�G���W���uRazor�v�̊�{�𗝉����悤 �| ��IT�v�́u�r���[�J��������������w�r���[�E�w���p�[�x�v�̐߂��Q�Ƃ��Ăق����B�܂��A�w���p�[�����삷��ꍇ�ɂ́u@helper�v�Ŏn�܂�R�[�h���L�q���邪�A�ڂ����́u.NET�J���̐V�W���uNuGet�v����i��ҁj �| ��IT�v�́uNuGet�p�b�P�[�W�̍쐬�v�̐߂��Q�Ƃ��Ăق����BEnd of Article

CfbNXEy[Ww �@�u.NET�J���w�Ղ̊��x�v


Insider.NET �t�H�[���� �V���L��
  • ��2��@�Ȍ��ȃR�[�f�B���O�̂��߂� �i2017/7/26�j
    �@�����_���ŋL�q�ł��郁���o�̑����Athrow���Aout�ϐ��A�^�v���ȂǁAC# 7�ɂ͈ȑO�����R�[�h���Ȍ��ɋL�q�ł���悤�ȋ@�\����������Ă���
  • ��1��@Visual Studio Code�f�o�b�O�̊�b�m�� �i2017/7/21�j
    �@Node.js�v���O�������f�o�b�O���Ȃ���AVisual Studio Code�ɓ�������Ă���f�o�b�O�@�\�̊�{�́u�L�v���}�X�^�[���悤
  • ��1��@���ĂȃR�[�f�B���O�̂��߂� �i2017/7/19�j
    �@C# 7�Œlj����ꂽ�V�@�\�̒�����A�u���l���e�����\���̉��P�v�Ɓu���[�J���֐��v���Љ��B�����͕�����₷���R�[�h���L�q����̂Ɏg����
  • Presentation Translator �i2017/7/18�j
    �@Presentation Translator��PowerPoint�p�̃A�h�C���B�v���[���e�[�V�������̎����̕t����A������ł̎��^�����A�X���C�h�̖|����s����
��IT���[���}�K�W���@�V������X�^�b�t�̃R���������[���œ͂��܂��i�����j

���ڂ̃e�[�}

Insider.NET �L�������L���O

�{�� ����