我是asp.net的新手并试图使用mvc scaffolding
我为数据库名称ProjectDatabase编写了一个SQL查询:
use ProjectDatabase;
create table USERS
(
USERS_ID int IDENTITY(1,1) not null ,
email varchar(max) not null ,
phone nvarchar(30),
name nvarchar(30),
family nvarchar(30),
password nvarchar(30) not null,
createdate date not null,
lastlogindate date not null,
PRIMARY KEY (USERS_ID)
);
create table PROJECT
(
Project_ID int IDENTITY(1,1) not null ,
Description nvarchar(max),
usern_ID int references USERS(USERS_ID) ,
createDate date,
DeadLineDate date ,
Money date
PRIMARY KEY (Project_ID)
);
之后我将这些数据库表添加到mvc4项目的模型文件夹
然后我尝试为名为USERS的表创建一个控制器,这里是控制器:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcApplication4.Models;
namespace MvcApplication4.Controllers
{
public class UserController : Controller
{
private ProjectDatebaseEntities db = new ProjectDatebaseEntities();
//
// GET: /User/
public ActionResult Index()
{
return View(db.USERS.ToList());
}
//
// GET: /User/Details/5
public ActionResult Details(int id = 0)
{
USER user = db.USERS.Find(id);
if (user == null)
{
return HttpNotFound();
}
return View(user);
}
//
// GET: /User/Create
public ActionResult Create()
{
return View();
}
//
// POST: /User/Create
[HttpPost]
public ActionResult Create(USER user)
{
if (ModelState.IsValid)
{
db.USERS.Add(user);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(user);
}
//
// GET: /User/Edit/5
public ActionResult Edit(int id = 0)
{
USER user = db.USERS.Find(id);
if (user == null)
{
return HttpNotFound();
}
return View(user);
}
//
// POST: /User/Edit/5
[HttpPost]
public ActionResult Edit(USER user)
{
if (ModelState.IsValid)
{
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(user);
}
//
// GET: /User/Delete/5
public ActionResult Delete(int id = 0)
{
USER user = db.USERS.Find(id);
if (user == null)
{
return HttpNotFound();
}
return View(user);
}
//
// POST: /User/Delete/5
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
USER user = db.USERS.Find(id);
db.USERS.Remove(user);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
}
}
但是当我通过firefox打开这个项目时,我尝试使用删除按钮删除一个创建原始,我面对这个错误:但是当我在url中键入raw的id时它可以被删除容易。
我真的无法理解它有什么问题,我搜索了很多但我找不到任何东西
任何人都可以帮助我
提前致谢
答案 0 :(得分:0)
编辑和删除操作不应具有 id 作为可选参数。您需要 ID 才能知道要编辑或删除的用户,对吧?
所以改变
public ActionResult Edit(int id = 0)
到
public ActionResult Edit(int id)
也为删除做同样的事。
另外请确保在构建用于编辑和删除的网址时,您还要包含该ID。
类似的东西:
@Url.Action("Edit", { id = model.UserID })
米哈伊