ASP.NET MVC æµã‚Œ

View(é…延実行)

@model IEnumerable<MvcBasic.Models.Member>
※コンテキスト:Memberã‚’å‚ç…§ã™ã‚‹äº‹ã‚’宣言。
 コンテキストを通ã—ã¦ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚¯ãƒ©ã‚¹(モデル)ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã‚‹
<table class="table">
  <tr>
    <th>æ°å</th>
    <th>メールアドレス</th>
    <th>誕生日</th>
    <th>既婚</th>
    <th>備考</th>
  </tr>
  
  //1行目ã®å®£è¨€ã«ã‚ˆã‚ŠModelã¯ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£
  @foreach (var item in Model)
  {
    <tr>
      <td>@item.Name</td>
      <td>@item.Email</td>
      <td>@item.Birth</td>
      <td>@item.Married</td>
      <td>@item.Memo</td>
    </tr>
  }
</table>

コントローラー(é…延実行)

(BeginController.cs)
using MvcBasic.Models;
namespace MvcBasic.Controllers
{
  ※コントローラーã¯Controllerクラスを継承ã—ãªã‘れã°ãªã‚‰ãªã„
  public class BeginController : Controller
  {
    //コンテキストを使用ã—ã¦ãƒ¢ãƒ‡ãƒ«(DBエンティティ)をインスタンス化
    private MvcBasicContext _db = new MvcBasicContext();
    
    public ActionResult List()
    {
      //Viewã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’渡ã™
      //ã“ã®æ™‚点ã§ã¯DBã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã¯çµ‚了ã—ã¦ã„ãªã„。
      //Viewã‹ã‚‰ã¯å†åº¦DBã¸ã‚¢ã‚¯ã‚»ã‚¹ã—ã€ãƒ‡ãƒ¼ã‚¿ã‚’å–å¾—ã™ã‚‹ã€‚
      return View(_db.Members);
    }
  }
}

コンテキストクラス

(MvcBasicContext.cs)
※エンティティクラスã¨å®Ÿéš›ã®ï¼¤ï¼¢ã®æ©‹æ¸¡ã—å½¹
using System.Data.Entity;
namespace MvcBasic.Models
{
  ※コンテキストã¯DbContextクラスを継承ã—ãªã‘れã°ãªã‚‰ãªã„
  public class MvcBasicContext : DbContext
  {
    public DbSet<Member> Members { get; set; }
    ※エンティティクラスを指定
    
    public DbSet<BasketInfo> BasketInfo { get; set; }
    ※他ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã‚‚å‚ç…§ã™ã‚‹å ´åˆ
  }
}

接続先DB設定

(Web.Config)
<connectionStrings>
  <add name="MvcBasicConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\MvcBasic.mdf;Integrated Security=True"
   providerName="System.Data.SqlClient" />
</connectionStrings>

エンティティクラス定義

(Member.cs)
namespace MvcBasic.Models
{
  public class Member
  {
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public DateTime Birth { get; set; }
    public bool Married { get; set; }
    public string Memo { get; set; }
  }
}

イニシャライザー

(MvcBasicInitializer.cs)
â€»åˆæœŸå€¤ã‚’設定
using System.Data.Entity;
namespace MvcBasic.Models
{
  public class MvcBasicInitializer : DropCreateDatabaseAlways<MvcBasicContext>
  {
    
    ã€ã‚¤ãƒ‹ã‚·ãƒ£ãƒ©ã‚¤ã‚¶ãƒ¼å®Ÿè¡Œã®ã‚¿ã‚¤ãƒŸãƒ³ã‚°æŒ‡å®šã€‘
    CreateDatabaseIfNotExists : データベースãŒç„¡ã„時
    DropCreateDatabaseAlways : アプリケーション実行時常ã«
    DropCreateDatabaseIfModelChanges : モデルãŒå¤‰æ›´ã•ã‚ŒãŸæ™‚
    
    
    protected override void Seed(MvcBasicContext context)
    {
      var members = new List<Member>
      {
        new Member {
          Name = "Name1",
          Email = "Email1",
          Birth = DateTime.Parse("1980-06-25"),
          Married = false,
          Memo = "Memo1"
        },
        new Member {
          Name = "Name2",
          Email = "Email2",
          Birth = DateTime.Parse("1980-06-25"),
          Married = false,
          Memo = "Memo2"
        },
        new Member {
          Name = "Name3",
          Email = "Email3",
          Birth = DateTime.Parse("1980-06-25"),
          Married = false,
          Memo = "Memo3"
        }
      };
      members.ForEach(m => context.Members.Add(m));
      context.SaveChanges();
    }
  }
}

//ã‚¤ãƒ‹ã‚·ãƒ£ãƒ©ã‚¤ã‚¶ãƒ¼ã®æŒ‡å®š
(Global.asax)
using MvcBasic.Models;
using System.Data.Entity;
namespace MvcBasic
{
  public class MvcApplication : System.Web.HttpApplication
  {
    protected void Application_Start()
    {
      Database.SetInitializer<MvcBasicContext>(new MvcBasicInitializer());
    }
  }
}

View(峿™‚実行)

@model IEnumerable<MvcBasic.Models.Member>
<p>
  @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
  <tr>
    <th>
      @Html.DisplayNameFor(model => model.Name)
    </th>
    <th>
      @Html.DisplayNameFor(model => model.Email)
    </th>
    略
  </tr>
@foreach (var item in Model) {
  <tr>
    <td>
      @Html.DisplayFor(modelItem => item.Name)
    </td>
    <td>
      @Html.DisplayFor(modelItem => item.Email)
    </td>
    略
    <td>
      @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
      @Html.ActionLink("Details", "Details", new { id=item.Id }) |
      @Html.ActionLink("Delete", "Delete", new { id=item.Id })
    </td>
  </tr>
}
</table>

コントローラー(峿™‚実行)

(BeginController.cs)
using MvcBasic.Models;
namespace MvcBasic.Controllers
{
  ※コントローラーã¯Controllerクラスを継承ã—ãªã‘れã°ãªã‚‰ãªã„
  public class BeginController : Controller
  {
    //コンテキストを使用ã—ã¦ãƒ¢ãƒ‡ãƒ«(DBエンティティ)をインスタンス化
    private MvcBasicContext _db = new MvcBasicContext();
    
    public ActionResult Index()
    {
      //Viewã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’リスト化ã—ã¦ã‹ã‚‰æ¸¡ã™
      //ã“ã®æ™‚点ã§DBã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ãŒçµ‚了ã—ã¦ãŠã‚Šã€Viewã‹ã‚‰ã¯ã‚¢ã‚¯ã‚»ã‚¹ã—ãªã„ã§æ¸ˆã‚€ã€‚
      return View(_db.Members.ToList());
    }
  }
}

属性

モデルã«å±žæ€§ã‚’付ã‘ã‚‹ã¨ã€Viewã‹ã‚‰ã®Viewヘルパー使用ã«ã‚ˆã‚‹å‚ç…§æ™‚ã«æ§˜ã€…ãªæ©Ÿèƒ½ã‚’利用ã§ãる。
・DisplayNameFor()ç­‰ã§é …ç›®åを表示
・Display()ç­‰ã§åž‹ãƒ»ãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ã«å¿œã˜ã¦è¡¨ç¤ºã‚’ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã‚„リンクã«å¤‰æ›
using System.ComponentModel;
namespace MvcBasic.Models
{
  public class Member
  {
    public int Id { get; set; }
    
    [DisplayName("æ°å")]
    public string Name { get; set; }
    
    [DisplayName("メールアドレス")]
    [DataType(DataType.URL)]
    public string Email { get; set; }
    
    [DisplayName("çµå©š")]
    public bool Maried { get; set; }
    
    略
  }
}

mvc_通常model
 ↓
mvc_displayname属性

Follow me!