Visual StudioでASP.Net MVC Web Applicationプロジェクトを作成する。
Modelクラス、Repositoryクラスを作成する。RepositoryクラスはModelクラスの取得、保存の操作を実装するクラス。Modelクラスにはビジネスロジックだけを実装する。
Controlクラスを作成するにはControllerフォルダで右クリックし、追加->Controllerをクリックする。
Controllerクラスが作成されるので、例えば下記のようなリストデータ出力用メソッドを作成する。
下記サンプルコードはNerdDinnerサンプルより引用。
// GET: /Dinners/ リスト出力
// /Dinners/Page/2 リスト出力(ページング有り)
public ActionResult Index(int? page) {
const int pageSize = 10;// RepositoryクラスにはModelクラスの取得、保存の操作を実装する。
//ビジネスロジックはModelクラスに実装する。
var upcomingDinners = dinnerRepository.FindUpcomingDinners();
var paginatedDinners = new PaginatedList<Dinner>(upcomingDinners, page ?? 0, pageSize);//ActionResultはViewクラスが返却する。
return View(paginatedDinners);
}
Viewクラスの作成するには、このメソッド内で右クリックし、「Add View」をクリックするとViewフォルダ内にViewクラス(aspxファイル)が作成される。
aspxファイルはWebFormとは違い、下記のようなテンプレートファイル風なものになる。Htmlヘルパークラスなどを使用してViewを編集する。
<%@ Page Inherits=”System.Web.Mvc.ViewPage<NerdDinner.Helpers.PaginatedList<NerdDinner.Models.Dinner>>” Language=”C#” MasterPageFile=”~/Views/Shared/Site.Master” %>
<asp:Content ID=”Title” ContentPlaceHolderID=”TitleContent” runat=”server”>
Upcoming Dinners
</asp:Content>
<asp:Content ID=”Content2″ ContentPlaceHolderID=”MainContent” runat=”server”>
<h2>
Upcoming Dinners
</h2>
<ul>
<% foreach (var dinner in Model) { %>
<li>
<%= Html.ActionLink(dinner.Title, “Details”, new { id=dinner.DinnerID }) %>
on
<%= Html.Encode(dinner.EventDate.ToShortDateString())%>
@
<%= Html.Encode(dinner.EventDate.ToShortTimeString())%>
</li>
<% } %>
</ul>
<div class=”pagination”>
<% if (Model.HasPreviousPage) { %>
<%= Html.RouteLink(“<<<”,
“UpcomingDinners”,
new { page=(Model.PageIndex-1) }) %>
<% } %>
<% if (Model.HasNextPage) { %>
<%= Html.RouteLink(“>>>”,
“UpcomingDinners”,
new { page = (Model.PageIndex + 1) })%>
<% } %>
</div>
</asp:Content>
その他、下記のような詳細、CRUD操作などを行うメソッドを必要に応じて作成する。
//
// GET: /Dinners/Details/5
public ActionResult Details(int id)//
// GET: /Dinners/Edit/5
[Authorize]
public ActionResult Edit(int id)//
// POST: /Dinners/Edit/5
[AcceptVerbs(HttpVerbs.Post), Authorize]
public ActionResult Edit(int id, FormCollection collection)//
// GET: /Dinners/Create
[Authorize]
public ActionResult Create()//
// HTTP GET: /Dinners/Delete/1
[Authorize]
public ActionResult Delete(int id)