�@ �@

�A�ځFASP.NET MVC����y�o�[�W����3�Ή��z

��4��@���ؑ����̎���ƃN���X�E���x���̃��f������

�R�c �ˊ��ihttp://www.wings.msn.to/�j
2011/06/17
Page1 Page2 Page3

�����v���p�e�B���܂����������؂���������

�@��蕡�G�ȃA�v���P�[�V�����ł́A�P��̃v���p�e�B�����؂���΂���ł͂Ȃ��B�����̃v���p�e�B�ɂ܂������āA���̊֘A�����܂߂����؂��s�������Ƃ����P�[�X������͂����B�{�e�̍Ō�ł́A����������蕡�G�Ȍ��؃��[��������������@�ɂ‚��ĉ������B

�@�ȉ��ŗᎦ����̂́A

�u���s���iPublished��j��2007�N�ȍ~�ł��邩�ǂ����ɂ���āAISBN�R�[�h�iIsbn��j�̌��؃t�H�[�}�b�g��؂�ւ���v

�Ƃ�����ł���B2007�N�ȍ~�̏��Ђɂ‚��Ă�13�����̐V�R�[�h�݂̂�F�߁A2006�N�ȑO�̏��Ђɂ‚��Ă�10�����̋��R�[�h�A13�����̐V�R�[�h����������͉”\�Ƃ���*6�B

*6 ISBN�R�[�h�̑̌n��2007�N�ȍ~�A�V�������̂ɉ��߂�ꂽ�B�ڂ����́A�uISBN - Wikipedia�v���Q�Ƃ���Ƃ悢�B

�@����ł͂��������A��̓I�ȃR�[�h�����Ă������B

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel;
using System.Text.RegularExpressions;

namespace MvcApp.Models
{
  public class Book : IValidatableObject
  {
    �c�c�����c�c

    // �N���X�E���x���̌��؃��[�����`
    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
      string pattern = "^[0-9]{3}-[0-9]{1}-[0-9]{3,5}-[0-9]{3,5}-[0-9X]{1}$";

      // Published��2007�N�ȑO�̏ꍇ�͐��K�\����u������
      if (Published.Year < 2007)
      {
        pattern = "^([0-9]{3}-)?[0-9]{1}-[0-9]{3,5}-[0-9]{3,5}-[0-9X]{1}$";
      }

      // �p�ӂ��ꂽ���K�\���p�^�[���œ��͒l���`�F�b�N
      var rx = new Regex(pattern);
      if (!rx.IsMatch(Isbn))
      {
        yield return new ValidationResult(
          "ISBN�R�[�h�̌`�����Ԉ���Ă��܂��B", new [] { "Isbn" });
      }
    }

  }
}
Imports System.ComponentModel.DataAnnotations
Imports System.ComponentModel
Imports System.Text.RegularExpressions

Public Class Book : Implements IValidatableObject

  �c�c�����c�c

  ' �N���X�E���x���̌��؃��[�����`
  Public Function Validate(validationContext As ValidationContext) As IEnumerable(Of ValidationResult) Implements IValidatableObject.Validate

    Dim list = New List(Of ValidationResult)()
    Dim pattern As String = "^[0-9]{3}-[0-9]{1}-[0-9]{3,5}-[0-9]{3,5}-[0-9X]{1}$"

    ' Published��2007�N�ȑO�̏ꍇ�́A���K�\����u������
    If (Published.Year < 2007) Then
      pattern = "^([0-9]{3}-)?[0-9]{1}-[0-9]{3,5}-[0-9]{3,5}-[0-9X]{1}$"
    End If

    ' �p�ӂ��ꂽ���K�\���p�^�[���œ��͒l���`�F�b�N
    Dim rx = New Regex(pattern)
    If Not rx.IsMatch(Isbn) Then
        list.Add(New ValidationResult(
            "ISBN�R�[�h�̌`�����Ԉ���Ă��܂��B", New String() {"Isbn"}))
    End If
    Return list
  End Function

End Class
���X�g10�@�����̃v���p�e�B���܂����錟�؃��[�������������R�[�h�i��FBook.cs�A���FBook.vb�j

�@�����̃v���p�e�B�ɂ܂����������؃��[������������ɂ́A�G���e�B�e�B�ɑ΂���IValidatableObject�C���^�[�t�F�C�X��Validate���\�b�h����������΂悢�i �j�B

�@ASP.NET MVC 3�ł́AIValidatableObject�C���^�[�t�F�C�X�����������G���e�B�e�B��SaveChanges���\�b�h�ŕۑ����悤�Ƃ����Ƃ��A�����I��Validate���\�b�h���Ăяo���̂ŁA�V���Ȍ��؃��[���̒lj��ɂ���āA�A�N�V�����E���\�b�h��r���[�E�X�N���v�g���e�����󂯂邱�Ƃ͂Ȃ��i����܂ł̃R�[�h�݂̂Ŏ����I�Ɍ��؂����{�����j�B

�@Validate���\�b�h�̒��ł͂܂��ADateTime�^��Published�v���p�e�B��2006�N�ȑO�ł��邩�ɂ���āA���؂̂��߂̐��K�\���t�H�[�}�b�g�i�ϐ�pattern�j��؂�ւ��Ă���i �A���K�\���Ɋւ���ڍׂ́A�ʍe�u�X�}�[�g�ȕ����񏈗��̂��߂̐��K�\�������v���Q�Ƃ��ꂽ���j�B���̂����ŁA���\�b�h�㔼�ł́A�^����ꂽ���K�\���p�^�[����Isbn��ւ̓��͒l�����K�\���ɍ��v���Ă��邩�ǂ������`�F�b�N���Ă���킯���B

�@���،��ʁi�G���[���j�́AValidationResult�I�u�W�F�N�g�i���m�ɂ�IEnumerable<ValidationResult>�I�u�W�F�N�g�j�Ƃ��ĕԂ��K�v������BValidationResult�R���X�g���N�^�̍\���́A�ȉ��̂Ƃ���B

ValidationResult(string error, IEnumerable<string> members)
ValidationResult�R���X�g���N�^�̍\��
error�F�G���[�E���b�Z�[�W�B
members�F�G���[���֘A�t����v���p�e�B���B

�@����members�́A�r���[�E�X�N���v�g�ɃG���[�𔽉f������ۂɗ��p������񂾁B�Ⴆ�΃��X�g10�̗�ł���΁A����members��isbn���w�肳��Ă���̂ŁA�G���[�E���b�Z�[�W��Isbn��̘e�i���m�ɂ�Isbn��Ɋ֘A�t����ValidationMessageFor���\�b�h�j�ɕ\������邱�ƂɂȂ�B

�@�ȏ�𗝉�������A�T���v�������s���A

  • ���s��2007�N�ȍ~�̏��ЂŁA10������ISBN�R�[�h�����͂ł��Ȃ�����
  • ���s��2006�N�ȑO�̏��ЂŁA10������ISBN�R�[�h�����‚���Ă��邱��

�����ꂼ��m�F���Ă݂悤*7�B

*7 �{�T���v�������s����ɂ́A�O��Isbn��ɑ΂��ēK�p���Ă�����RegularExpression���؂��R�����g�A�E�g���Ă����K�v������B


�}2�@2007�N�ȍ~�̏��Ђ�10������ISBN�R�[�h����͂���ƃG���[

��

�@�ȏ�A����̓A�m�e�[�V�������؂ɂ‚��Ă���ɓ��ݍ���ŁA����̌��؃��[�����`������@�ɂ‚��ĉ�������B���؏����̐��E�͂Ȃ��Ȃ��ɉ��[�����̂ł��邪�A�܂��͂����܂ł𗝉����Ă����΁A�����悻�̃P�[�X�̓J�o�[�ł���͂����B

�@���āA����Ń��f���̘b��͂���������؂�ƂȂ�B����́A�r���[�ɖڐ���]���āA�r���[�E�X�N���v�g�J���̌������ɂ͌������Ȃ�EditFor�^DisplayFor���\�b�h�ɂ‚��ĉ������\��ł���BEnd of Article

�@

�@INDEX
�@ ASP.NET MVC����y�o�[�W����3�Ή��z
�@ ��4��@���ؑ����̎���ƃN���X�E���x���̃��f������
�@   1�D����̌��ؑ������`����i�T�[�o�T�C�h�ҁj
�@   2�D����̌��ؑ������`����i�N���C�A���g�T�C�h�ҁj
  3�D�����v���p�e�B���܂����������؂���������
�@
�C���f�b�N�X�E�y�[�W�w �@�uASP.NET MVC����y�o�[�W����3�Ή��z�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

�{�� ����