�@

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

��3��@���f���E�o�C���h�ƃA�m�e�[�V�������؂̎���

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

�@�O���́AEntity Framework 4.1�̃R�[�h�E�t�@�[�X�g��ASP.NET MVC 3�̃X�L���t�H�[���f�B���O�@�\�𗘗p���āA�ȒP�ȏ��Џ��Ǘ��A�v���P�[�V�������쐬�����B

�@����́A�O��쐬�����A�v���P�[�V�����̒��ł��A�V�K�̏��Гo�^�t�H�[���Ƀt�H�[�J�X���āAASP.NET MVC�ɂ��f�[�^�o�^�̊�{�ɂ‚��ė������Ă����B�܂��A�{�e�㔼�ł́A�o�^�t�H�[���̎����Ɍ������Ȃ����؋@�\�ɂ‚��Ă��������B


�}1�@�X�L���t�H�[���f�B���O�@�\�Ŏ����������ꂽ�V�K�o�^�t�H�[���i���؋@�\��t���������́j

�f�[�^�o�^�̊�{

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

��Create�A�N�V�����E���\�b�h

�@�܂��́A�R���g���[���̃R�[�h����B�o�^�t�H�[���̕\���Ɋ֌W����̂́A���̓t�H�[���𐶐����邽�߂�Create()���\�b�h�ƁA�t�H�[��������͂��ꂽ�l���������邽�߂�Create(book)���\�b�h�ł���B

// ���̓t�H�[���𐶐����邽�߂�Create�A�N�V����
public ActionResult Create()
{
  return View();
}

// �mCreate�n�{�^�����N���b�N�����Ƃ��ɌĂяo�����Create�A�N�V����
[HttpPost]
public ActionResult Create(Book book)
{
  if (ModelState.IsValid)
  {
    db.Books.Add(book);
    db.SaveChanges();
    return RedirectToAction("Index");
  }
  return View(book);
}
' ���̓t�H�[���𐶐����邽�߂�Create�A�N�V����
Function Create As ViewResult
  return View()
End Function

' �mCreate�n�{�^�����N���b�N�����Ƃ��ɌĂяo�����Create�A�N�V����
<HttpPost()>
Function Create(book As Book) As ActionResult
  If ModelState.IsValid Then
    db.Books.Add(book)
    db.SaveChanges()
    Return RedirectToAction("Index")
  End If
  Return View(book)
End Function
���X�g1�@�o�^�t�H�[���𐶐����邽�߂�Create�A�N�V�����i��FBooksController.cs�A���FBooksController.vb�j

�@Create()�A�N�V�����ɂ‚��ẮA���M���ׂ��_�͂Ȃ��B�s���ׂ��������Ȃ��ꍇ�A�A�N�V�����E���\�b�h�ɂ́A����ActionResult�I�u�W�F�N�g��Ԃ����߂̃R�[�h�i�����ł�View���\�b�h�j���L�q����΂悢�������B

�@���X�g1�Œ��ڂ��Ăق����̂́A�|�X�g�E�f�[�^�����M���ꂽ�Ƃ��ɌĂяo�����Create(book)���\�b�h�ł���B�Ȃ��A���̒��ł������̕����́A���͒l���؂ŗ��p����R�[�h�ł���A�����_�ł͂܂��C�ɂ���K�v�͂Ȃ��B

HTTP���\�b�h�ŏ����𕪊򂷂�HttpPost����

�@�A�N�V�����E���\�b�h��HTTP GET�^HTTP POST�̂�������o�R���ČĂяo���ꂽ���ɂ���ď����𕪊򂵂����A�Ƃ����P�[�X�͂悭���邱�Ƃ��B�Ⴆ�΁A���X�g1�̗�ł���΁A�ȉ��̂悤�ɏ������Ƃ�Create(book)���\�b�h���ACreate()���\�b�h��1�‚ɂ܂Ƃ߂邱�Ƃ��ł���B

if (Request.HttpMethod == "GET")
{
  // HTTP GET�o�R�ŌĂяo���ꂽ�ꍇ�̏���
}
else
{
  // HTTP POST�o�R�ŌĂяo���ꂽ�ꍇ�̏���
}
���X�g2�@Create()���\�b�h��GET��POST�̗����������ꍇ

�@�������A���̂悤�ȏ������́A�P�̃e�X�g�̍s���₷���Ƃ����_��1�‚Ƃ��Ă��A���܂�]�܂����Ȃ��BRequest�I�u�W�F�N�g�ˑ��̃R�[�h���L�q����Ƃ������Ƃ́A�P�̃e�X�g�ɍۂ��āARequest�I�u�W�F�N�g�̃��b�N�i�e�X�g�̂��߂̃_�~�[�̃I�u�W�F�N�g�j��p�ӂ��Ȃ���΂Ȃ�Ȃ��Ƃ������Ƃ��Ӗ����邩�炾�B

�@�ł́A�ʂ̕��@�Ƃ��āA�t�H�[����\�����邽�߂�Books/New�A�N�V�����A���͒l���������邽�߂�Books/Create�A�N�V�����̂悤�ɁA�ʁX�̃A�N�V������p�ӂ�����ǂ����낤�B���̏ꍇ�A�����͂܂��ʂȖ��ɑ������邱�ƂɂȂ�B

�@�Ⴆ�΁A�G���h�E���[�U�[��Books/Create�A�N�V�����ɒ��ڃA�N�Z�X���Ă��܂����Ƃ�����ǂ����낤�BBooks/Create�A�N�V�����̓t�H�[���o�R�ŌĂяo����邱�Ƃ�z�肵�Ă���A�N�V�����ł��邩��A����͗\�����ʃG���[�̌����ɂȂ邩������Ȃ��i�����łȂ��Ă��A�Ӑ}�������ʂ͓����Ȃ����낤�j�B

�@�܂��ABooks/Create�A�N�V�����������G���W���̃N���[�������W���Ă��܂���������Ȃ��B�����܂ł��Ȃ��ABooks/Create�̓N���[���ɂ���Ď��W����Ă悢URI�ł͂Ȃ��̂ŁA���̂悤��URI�����J����Ă��邱�Ƃ́ASEO�iSearch Engine Optimization�j�Ƃ����ϓ_������D�܂�����Ԃł͂Ȃ��B

�@�����œo�ꂷ��̂�HttpPost�������BHttpPost�����𗘗p���邱�ƂŁA���̃A�N�V�����E���\�b�h��HTTP POST�o�R�ł̃��N�G�X�g�ɂ���Ă̂݌Ăяo����邱�Ƃ�錾�ł���*1�B���X�g1�̗�ł���΁ACreate(book)���\�b�h��HttpPost�������t�^����Ă���̂ŁAHTTP POST�o�R��Books/Create���Ăяo���ꂽ�ꍇ�ɂ̂�Create(book)���\�b�h���A����ȊO��HTTP���\�b�h�i���ʂ�HTTP GET�j��Books/Create���Ăяo���ꂽ�ꍇ�ɂ�Create()���\�b�h���Ăяo����邱�ƂɂȂ�B

*1 HttpPost��ASP.NET MVC 2.0���瓱�����ꂽ�������BASP.NET MVC 1.0�ł́A�����[AcceptVerbs(HttpVerbs.Post)] �����𗘗p����K�v������B

���͒l���I�u�W�F�N�g�Ƀo�C���h����

�@�A�N�V�����E���\�b�h�ł́A���f���E�I�u�W�F�N�g�i�G���e�B�e�B�j�������Ƃ��Ď󂯎��悤�ɂ��Ă��������ŁA���͒l���I�u�W�F�N�g�̃v���p�e�B�Ɏ����I�Ɋ��蓖�Ă邱�Ƃ��”\���i������u���f���E�o�C���h�@�\�v�ƌĂԁj�B

�@����̏ꍇ�A�����Ƃ���Book�I�u�W�F�N�g���w�肳��Ă���̂ŁABook�I�u�W�F�N�g��isbn�v���p�e�B�ɂ͓��͗v�fisbn�̒l���Atitle�v���p�e�B�ɂ͓��͗v�ftitle�̒l���A���ꂼ�ꏇ�Ɋ��蓖�Ă���킯���B

�@���X�g1�ł́A���͒l���o�C���h���ꂽBook�I�u�W�F�N�gbook���ABooks.Add���\�b�h�ŃR���e�L�X�g�E�I�u�W�F�N�g�ɒlj����������ŁASaveChanges���\�b�h�ɂ���ăf�[�^�x�[�X�ɔ��f���Ă���B�G���e�B�e�B�o�R�ł̃f�[�^�X�V�ɂ‚��Ă�Entity Framework�ɑ�����b�ł���̂ŁA�ڍׂ͕ʍe�uEntity Framework�ɂ�����N�G���ƍX�V�v�������ĎQ�Ƃ������������B

������ɕʂ̃A�N�V�������Ăяo��

�@�A�N�V����������������Ńr���[�E�X�N���v�g���Ăяo������ɁA�ʂ̃A�N�V�������Ăяo�����Ƃ��”\���B����ɂ́AView���\�b�h�̑���ɁARedirectToAction���\�b�h���Ăяo���΂悢�B

�@RedirectToAction���\�b�h�̍\���͈ȉ��̂Ƃ���B

RedirectToAction (string action
                    [,string controller] [,object routeValues])
RedirectToAction���\�b�h�̍\��
�Eaction�F�A�N�V������
�Econtroller�F�R���g���[����
�ErouteValues�F���[�e�B���O�E���[���Ɉ����n���p�����[�^

�@����controller���ȗ����ꂽ�ꍇ�ɂ́A����N���X�̒�����w�肳�ꂽ�A�N�V��������������A���������_�C���N�g����B����routeValues�ɂ‚��ẮA�{�A�ڌ㔼�Ń��[�e�B���O�̉�Ƃ��ĉ������\�肾�B

���r���[�E�X�N���v�gCreate.cshtml�^Create.vbhtml

�@�����ẮACreate()�A�N�V�����ɑΉ�����r���[�E�X�N���v�gCreate.cshtml�^Create.vbhtml���B�Ȃ��A�ȉ����X�g�̔����́A���͒l���؂ŗ��p����R�[�h�ł���A�����_�ł͎�肠�����������č\��Ȃ��B

@model MvcApp.Models.Book

@{
  ViewBag.Title = "Create";
}

<h2>Create</h2>

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@using (Html.BeginForm()) {
  @Html.ValidationSummary(true)
  <fieldset>
    <legend>Book</legend>

    <div class="editor-label">
      @Html.LabelFor(model => model.Isbn)
    </div>
    <div class="editor-field">
      @Html.EditorFor(model => model.Isbn)
      @Html.ValidationMessageFor(model => model.Isbn)
    </div>

    <div class="editor-label">
      @Html.LabelFor(model => model.Title)
    </div>
    <div class="editor-field">
      @Html.EditorFor(model => model.Title)
      @Html.ValidationMessageFor(model => model.Title)
    </div>

    <div class="editor-label">
      @Html.LabelFor(model => model.Price)
    </div>
    <div class="editor-field">
      @Html.EditorFor(model => model.Price)
      @Html.ValidationMessageFor(model => model.Price)
    </div>

    <div class="editor-label">
      @Html.LabelFor(model => model.Publish)
    </div>
    <div class="editor-field">
      @Html.EditorFor(model => model.Publish)
      @Html.ValidationMessageFor(model => model.Publish)
    </div>

    <div class="editor-label">
      @Html.LabelFor(model => model.Published)
    </div>
    <div class="editor-field">
      @Html.EditorFor(model => model.Published)
      @Html.ValidationMessageFor(model => model.Published)
    </div>

    <p>
      <input type="submit" value="Create" />
    </p>
  </fieldset>
}

<div>
  @Html.ActionLink("Back to List", "Index")
</div>
@ModelType MvcAppVb.Book

@Code
  ViewData("Title") = "Create"
End Code

<h2>Create</h2>

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@Using Html.BeginForm()
  @Html.ValidationSummary(True)
  @<fieldset>
    <legend>Book</legend>

    <div class="editor-label">
      @Html.LabelFor(Function(model) model.Isbn)
    </div>
    <div class="editor-field">
      @Html.EditorFor(Function(model) model.Isbn)
      @Html.ValidationMessageFor(Function(model) model.Isbn)
    </div>
    <div class="editor-label">
      @Html.LabelFor(Function(model) model.Title)
    </div>
    <div class="editor-field">
      @Html.EditorFor(Function(model) model.Title)
      @Html.ValidationMessageFor(Function(model) model.Title)
    </div>

    <div class="editor-label">
      @Html.LabelFor(Function(model) model.Price)
    </div>
    <div class="editor-field">
      @Html.EditorFor(Function(model) model.Price)
      @Html.ValidationMessageFor(Function(model) model.Price)
    </div>

    <div class="editor-label">
      @Html.LabelFor(Function(model) model.Publish)
    </div>
    <div class="editor-field">
      @Html.EditorFor(Function(model) model.Publish)
      @Html.ValidationMessageFor(Function(model) model.Publish)
    </div>

    <div class="editor-label">
      @Html.LabelFor(Function(model) model.Published)
    </div>
    <div class="editor-field">
      @Html.EditorFor(Function(model) model.Published)
      @Html.ValidationMessageFor(Function(model) model.Published)
    </div>

    <p>
      <input type="submit" value="Create" />
    </p>
  </fieldset>
End Using

<div>
  @Html.ActionLink("Back to List", "Index")
</div>
���X�g3�@���Џ��̓��̓t�H�[����\�����邽�߂̃r���[�E�X�N���v�g�i��FCreate.cshtml�A���FCreate.vbhtml�j

�@�����Œ��ڂ��Ă��������|�C���g�́A�ȉ��̂Ƃ��肾�B

��L�[���ڂ͎�����������Ȃ�

�@���́A�X�L���t�H�[���f�B���O�@�\�ɂ�莩���������ꂽCreate.cshtml�^Create.vbhtml�́A���̂܂܂ł͓��삵�Ȃ��̂ŗv���ӂ��B�Ƃ����̂��A�X�L���t�H�[���f�B���O�@�\�ł͎�L�[��i�����ł�isbn��j�����͗v�f�Ƃ��ēW�J����Ȃ����߂�*2�B���X�g3�̑��������̂悤�ɁA�蓮�œ��͗v�f��lj����Ă������B

*2 �W���I��int�^��Id�A���N���X����Id��𗘗p���Ă���ꍇ�A��L�[�͎����A�ԂƂȂ�A����͕͂s�v�ł���̂ŁA�����������͋N����Ȃ��B

�t�H�[���̒�`������������r���[�E�w���p�[

�@����܂ł����x���q�ׂĂ����悤�ɁAASP.NET MVC�ł̓r���[�E�X�N���v�g�̊J�������������邽�߂ɁA���܂��܂ȃr���[�E�w���p�[��p�ӂ��Ă���B�Ⴆ�΃��X�g3�ł��ȉ��̂悤�ȃr���[�E�w���p�[�𗘗p���Ă���B

  • Html.BeginForm
  • Html.LabelFor
  • Html.EditorFor

�@BeginForm���\�b�h�́Ausing���߂ł����Đ錾���邱�ƂŁAusing�u���b�N�����̂܂�<form>�`</form>�^�O�Œu����������d�g�݂��B�������ȗ������ꍇ�ɂ́A<form>�^�O��action�����ɂ͌��݂̃A�N�V���������̂܂܃Z�b�g�����B�‚܂�A���̗�ł͈ȉ��̂悤��<form>�^�O�����������͂����B

<form action="/Hello/Post/" method="post">

�@������action������method�����̒l��ύX�������ꍇ�ɂ́ABeginForm���\�b�h�̈�����lj�����΂悢�B�Ⴆ�΁A�ȉ���action�������u/Home/Process�v�Amethod�������uget�v�ɂ������ꍇ��BeginForm���\�b�h�̋L�q�ł���iC#�̗�j�B

@using (Html.BeginForm("Process", "Home", FormMethod.Get)) {

�@LabelFor�^EditorFor���\�b�h�́A�n���ꂽ�v���p�e�B�ɉ����āA���ꂼ�ꃉ�x���i<label>�v�f�j�Ɠ��͗v�f���o�͂��邽�߂̃��\�b�h���B�o�͂������͗v�f�́A�v���p�e�B�̌^�ɉ����Č��߂���B�Ⴆ�΁A

@Html.LabelFor(model => model.Isbn)
@Html.EditorFor(model => model.Isbn)

�ŁABook�G���e�B�e�B�ɂ�����Isbn�v���p�e�B�Ɍ��ѕt�������x���Ɠ��͗v�f�i�e�L�X�g�{�b�N�X�j��\������A�Ƃ����Ӗ��ɂȂ�imodel�́A@model�f�B���N�e�B�u�Ŏw�肳�ꂽ�G���e�B�e�B�j�B

�@

�@INDEX
�@ ASP.NET MVC����y�o�[�W����3�Ή��z
�@ ��3��@���f���E�o�C���h�ƃA�m�e�[�V�������؂̎���
  1�D�f�[�^�o�^�̊�{�^Create�A�N�V�����E���\�b�h�^�r���[�E�X�N���v�g
�@   2�D���؋@�\�̎����^�G���e�B�e�B�Ɍ��؃��[����lj�
�@   3�D�r���[�E�X�N���v�g�ŃG���[�E���b�Z�[�W��\��
�@
�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

�{�� ����