こんにちは、MVC3を習得して学習している人は、ゲームが追加されたときに自分のウェブサイトでユーザーにゲームが既に開始されているかどうかを確認することができますか?この機能を使用して、私のウェブサイト上のどのゲーマーも同じゲームの全体的なレビューを書くことはできません。この理由は、ユーザーがゲームについてタルクできるページがあるからです。だからこそ、私は、ゲームが出た場合に新しいゲームを追加するときにデータベースをチェックする方法を望んでいるのです。既存のレコードを確認する方法
は私のコントローラは以下の通りです:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using PagedList;
using System.Web;
using System.Web.Mvc;
using System.IO;
using Test.Models;
namespace Test.Controllers
{
public class GameController : Controller
{
private gamezoneDBEntities db = new gamezoneDBEntities();
//
// GET: /Game/
public ViewResult Index(string Ordering, string WordFilter, string DisplaySearchResults, int? CounterForPage)
{
{
var Info = db.tblGames.Include(x => x.tblConsole);
}
var Games = from b in db.tblGames
.Where(U => U.UserName == User.Identity.Name)
select b;
switch (Ordering)
{
case "HeadlineName":
Games = Games.OrderBy(b => b.GameName);
break;
case "DatePosted":
Games = Games.OrderBy(b => b.ReleaseYear);
break;
case "DiscriptionDate":
Games = Games.OrderBy(b => b.ReleaseYear);
break;
default:
Games = Games.OrderByDescending(b => b.ReleaseYear);
break;
}
int pageSize = 3;
int pageNumber = (CounterForPage ?? 1);
var PageNumberResults = Games.ToPagedList(pageNumber, pageSize);
ViewBag.PageNumberResults = Games.Count();
if (PageNumberResults.Any())
{
return View(PageNumberResults);
}
return View("Error");
}
[HttpPost]
public ActionResult Create(tblGame tblgame,
HttpPostedFileBase image1,
HttpPostedFileBase image2)
{
try
{
if (ModelState.IsValid)
{
if (image1 != null)
{
string image = image1.FileName;
tblgame.Image = image;
var image1Path = Path.Combine(Server.MapPath("~/Content/UploadImages"), image);
image1.SaveAs(image1Path);
}
if (image2 != null)
{
string Image2 = image2.FileName;
tblgame.Image2 = Image2;
var image2Path = Path.Combine(Server.MapPath("~/Content/UploadImages"), Image2);
image2.SaveAs(image2Path);
}
db.tblGames.Add(tblgame);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.ConsoleNameIDFK = new SelectList(db.tblConsoles, "ConsoleName", "ConsoleName", tblgame.ConsoleNameIDFK);
return View(tblgame);
}
catch
{
return View("Upload_Image_Failed");
}
}
//
// GET: /Game/Create
public ActionResult Create()
{
ViewBag.ConsoleNameIDFK = new SelectList(db.tblConsoles, "ConsoleName", "ConsoleName");
return View(new tblGame { UserName = @User.Identity.Name });
}
public ViewResult Details(int id)
{
tblGame tblgame = db.tblGames.Find(id);
return View(tblgame);
}
//
// GET: /Game/Edit/5
public ActionResult Edit(int id)
{
tblGame tblgame = db.tblGames.Single(i => i.GameID == id);
ViewBag.ConsoleNameIDFK = tblgame.ConsoleNameIDFK;
return View(tblgame);
}
[HttpPost]
public ActionResult Edit(tblGame tblgame, HttpPostedFileBase Image, int id,
HttpPostedFileBase image2)
{
if (ModelState.IsValid)
{
if (Image != null)
{
string image = Image.FileName;
tblgame.Image = image;
var image1Path = Path.Combine(Server.MapPath("~/Content/UploadImages"), image);
Image.SaveAs(image1Path);
}
if (image2 != null)
{
string Image2 = image2.FileName;
tblgame.Image2 = Image2;
var image2Path = Path.Combine(Server.MapPath("~/Content/UploadImages"), Image2);
image2.SaveAs(image2Path);
}
db.tblGames.Attach(tblgame);
db.Entry(tblgame).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Edit");
}
ViewBag.ConsoleNameIDFK = new SelectList(db.tblConsoles, "ConsoleName", "ConsoleName", tblgame.ConsoleNameIDFK);
return View(tblgame);
}
//
// GET: /Game/Delete/5
public ActionResult Delete(int id)
{
tblGame tblgame = db.tblGames.Find(id);
return View(tblgame);
}
//
// POST: /Game/Delete/5
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
try
{
tblGame tblgame = db.tblGames.Find(id);
db.tblGames.Remove(tblgame);
db.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View("Error");
}
}
protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
}
}
私はゲームallredayのexsits場合、私は、ユーザーがユニークなコードを持っていると見しようとしてextermly苦労がありました。私はこのコードが必要です。そうでなければ、すべてのゲームのデータベースをチェックし、このコードが存在しないゲームであればエラーをスローすることができます。
私は私のコントローラに以下を追加しました:
[HttpPost]
public ActionResult Create(tblGame tblgame, HttpPostedFileBase image1, HttpPostedFileBase image2)
{
try
{
if (ModelState.IsValid)
{
var mygame = db.tblGames.Where(x => x.GameName == tblgame.GameName).SingleOrDefault();
if (mygame != null)
{
if (image1 != null)
{
string image = image1.FileName;
tblgame.Image = image;
var image1Path = Path.Combine(Server.MapPath("~/Content/UploadImages"), image);
image1.SaveAs(image1Path);
}
if (image2 != null)
{
string Image2 = image2.FileName;
tblgame.Image2 = Image2;
var image2Path = Path.Combine(Server.MapPath("~/Content/UploadImages"), Image2);
image2.SaveAs(image2Path);
}
db.tblGames.Add(tblgame);
db.SaveChanges();
return RedirectToAction("Index");
}
else
{
//otherwise we add a generic error to the model state
ModelState.AddModelError("", "A game review already exists");
}
}
}
catch
{
return View("Upload_Image_Failed");
}
//if arrive here the model is returned back to the view with the errors added
return View(tblgame);
}
ページに表示されるように、編集を承認するには十分な評判を持つ人がさらに必要です。 –