MVC 3+Entity Framework実現投票システム(二)
3763 ワード
前節では、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つのコントローラクラスのコードです.次のセクションでは、コントローラに指定したビューレイヤインタフェースを追加します.
未完待機・・・
1.Controllers(コントローラ)ディレクトリポイントを右に作成し、コントローラを追加します.
2.ホームコントローラの追加:
3.Adminコントローラを追加する:
4.作成が完了すると、Controllersディレクトリに次の2つが追加されます.csファイル:
5.HomeControllers.csのコードは次のとおりです.
public class HomeController : Controller
//
{
Models.VoteEntities mv = new Models.VoteEntities();//ソリッドオブジェクトの作成
return View(mv.Users.ToList());//クエリー結果をビューレイヤに出力
6.AdminControllers.csのコードは以下の通りです.
public class AdminController : Controller
//
{
List list = mv.Users.ToList();//usersテーブルのすべての情報を取得する
}
//
{
}
//
{
}
//
public ActionResult Create(Models.Users mu)
try
string picname = Path.GetFileName(Request.Files["up"].FileName);//ファイル名を取得
Request.Files["up"].SaveAs(filepath);
mu.UserPicPath = picname;//データにファイルを保存する相対パス(ファイル名)を付けるとになります.
mv.AddToUsers(mu);
}
{
}
//GET:/Admin/Edit/5
public ActionResult Edit(int id)
return View();
//POST:/Admin/Edit/5
[HttpPost]
{
{
mv.Users.Single(m => m.id == id).UserName = mu.UserName;//指定したユーザ名を検索し、新しいユーザに更新する.
mv.SaveChanges();//変更を保存
}
{
}
//GET:/Admin/Delete/5
public ActionResult Delete(int id)
Models.VoteEntities mv = new Models.VoteEntities();
mv.SaveChanges();
}
public ActionResult Delete(int id, FormCollection collection)
try
}
{
}
}
以上は2つのコントローラクラスのコードです.次のセクションでは、コントローラに指定したビューレイヤインタフェースを追加します.
未完待機・・・