我已成功生成数据库,数据库中的模型以及生成默认页面的控制器。我目前遇到的问题是编辑和删除页面,它们不断产生问题并尝试过
参数字典包含非可空类型'System.Int32'的参数'id'的空条目,用于'Olympics2012.Controllers.AthleteController'中的方法'System.Web.Mvc.ActionResult Edit(Int32)'。可选参数必须是引用类型,可空类型,或者声明为可选参数。 参数名称:参数
描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.ArgumentException:参数字典在'Olympics2012'中包含方法'System.Web.Mvc.ActionResult Edit(Int32)'的非可空类型'System.Int32'的参数'id'的空条目.Controllers.AthleteController”。可选参数必须是引用类型,可空类型,或者声明为可选参数。 参数名称:参数
public ActionResult Edit(int? id)
{
Athlete athlete = db.Athletes.Find(id);
return View(athlete);
}
[HttpPost]
public ActionResult Edit(Athlete athlete)
{
if (ModelState.IsValid)
{
db.Entry(athlete).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(athlete);
}
答案 0 :(得分:1)
嗨,尝试将一个int值传递给Find方法:
public ActionResult Edit(int? id)
{
if (id.HasValue)
{
Athlete athlete = db.Athletes.Find(id.Value);
return View(athlete);
}
// A null-value has been passed
return RedirectToAction("Index");
}
第二:您的编辑链接是否包含要编辑的项目的ID?
例如:http:// [site_name] / [controller_name] / Edit / [id]
如果你没有指定id,那么你应该这样做(在'SomeView.schtml'文件中,如果你使用Razor引擎):
//...
@foreach(var item in [elements_container].Elements)
{
//...
@Html.ActionLink("Edit", "Edit", new { id = item.Id })
//...
}
//...
答案 1 :(得分:0)
尝试将编辑方法更改为:
public ActionResult Edit(int id)