MVC 3+Entity Framework実現投票システム(二)


前節では、ModelsをエンティティーFrmaeworkモデルに追加しました.次に、制御層のコード作成を完了します.
1.Controllers(コントローラ)ディレクトリポイントを右に作成し、コントローラを追加します.
2.ホームコントローラの追加:
3.Adminコントローラを追加する:
4.作成が完了すると、Controllersディレクトリに次の2つが追加されます.csファイル:
5.HomeControllers.csのコードは次のとおりです.
public class HomeController : Controller
  • {

  • //
  • //GET:/Home/

  • public ActionResult Index()

  • {

  • Models.VoteEntities mv = new Models.VoteEntities();//ソリッドオブジェクトの作成

  • return View(mv.Users.ToList());//クエリー結果をビューレイヤに出力
  • }

  • }

  • 6.AdminControllers.csのコードは以下の通りです.
    public class AdminController : Controller
  • {

  • //
  • //GET:/Admin/

  • public ActionResult Index()

  • {
  • Models.VoteEntities mv = new Models.VoteEntities();//データエンティティ
  • の作成
    List list = mv.Users.ToList();//usersテーブルのすべての情報を取得する
  • ViewModel.List = list;//テーブルの情報をViewModelに割り当てます.List,注意Listは動的表現であり,自己命名である.

  • return View();

  • }

  • //
  • //GET:/Admin/Details/5

  • public ActionResult Details(int id)

  • {
  • return View();

  • }

  • //
  • //GET:/Admin/Create

  • public ActionResult Create()

  • {
  • return View();

  • }

  • //
  • //POST:/Admin/Create

  • [HttpPost]

  • public ActionResult Create(Models.Users mu)
  • {

  • try
  • {

  • string picname = Path.GetFileName(Request.Files["up"].FileName);//ファイル名を取得
  • string filepath = Server.MapPath("/Content/") + picname;//サーバに保存するパス
  • を取得する.
    Request.Files["up"].SaveAs(filepath);

  • mu.UserPicPath = picname;//データにファイルを保存する相対パス(ファイル名)を付けるとになります.
  • Models.VoteEntities mv = new Models.VoteEntities();

  • mv.AddToUsers(mu);
  • mv.SaveChanges();

  • return RedirectToAction("Index");

  • }
  • catch

  • {
  • return View();

  • }
  • }

  • //

  • //GET:/Admin/Edit/5

  • public ActionResult Edit(int id)
  • {

  • return View();
  • }

  • //

  • //POST:/Admin/Edit/5

  • [HttpPost]
  • public ActionResult Edit(int id, Models.Users mu)

  • {
  • try

  • {
  • Models.VoteEntities mv = new Models.VoteEntities();

  • mv.Users.Single(m => m.id == id).UserName = mu.UserName;//指定したユーザ名を検索し、新しいユーザに更新する.
  • mv.Users.Single(m => m.id == id).VoteCount = mu.VoteCount;//指定票を検索して新票数
  • に更新
    mv.SaveChanges();//変更を保存
  • return RedirectToAction("Index");

  • }
  • catch

  • {
  • return View();

  • }
  • }

  • //

  • //GET:/Admin/Delete/5

  • public ActionResult Delete(int id)
  • {

  • Models.VoteEntities mv = new Models.VoteEntities();
  • mv.DeleteObject(mv.Users.Single(m => m.id == id));//指定IDの一意値を問い合せる削除操作
  • を実行する.
    mv.SaveChanges();
  • return RedirectToAction("Index");

  • }

  • //POST:/Admin/Delete/5

  • [HttpPost]

  • public ActionResult Delete(int id, FormCollection collection)
  • {

  • try
  • {

  • return RedirectToAction("Index");

  • }
  • catch

  • {
  • return View();

  • }
  • }

  • }
    以上は2つのコントローラクラスのコードです.次のセクションでは、コントローラに指定したビューレイヤインタフェースを追加します.
    未完待機・・・