MVC3自动生成的代码错误
问题描述:
我正在做一个MVC 3应用程序。我正在使用Entity framwork数据库方法的第一种方法。所以所有的代码都是自动生成的。但问题是当我点击“编辑”,“详细信息”和“删除”链接,我得到这个错误。MVC3自动生成的代码错误
The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Edit(Int32)' in 'Fin_trial_06.Controllers.AuthorController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
Parameter name: parameters.
我的控制器代码是:
public ActionResult Details(int? id)
{
Author authors = _entities.Authors.Single(n => n.Author_ID == id);
return View(authors);
}
public ActionResult Edit(int id)
{
return View(_entities.Authors.Find(id));
}
// POST: /Author/Edit/
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, Author aut)
{
if (id == null)
return View("AuthorNotFound");
try
{
_entities.Entry(aut).State = EntityState.Modified;
_entities.SaveChanges();
TempData["Message"] = "You have successfully Editied Author";
return RedirectToAction("Index");
}
catch
{
return View();
}
}
public ActionResult Delete(int id)
{
return View(_entities.Authors.Find(id));
}
// POST: /Author/Delete/5
[HttpPost]
public ActionResult Delete(int id, Author aut)
{
try
{
_entities.Entry(aut).State = EntityState.Deleted;
_entities.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
帮助吗?
答
好,消息似乎很清楚
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, Author aut)
{
if (id == null)
如果无法进入活动ID == NULL。
小的后果:
if (id == null)
是没用的
解决方案: 无论您说的id是
int ?
,或者你不要忘了把一个隐藏字段为您编辑视图中的编号
答
在这个m中放置一个断点方法来查看一个id是否被传递给你的编辑函数。如果没有,那么你的观点是错误的,而不是通过你想编辑的项目的ID。如果你发布你的视图代码,我可以告诉你它失败的地方。
+0
@Raphael使参数无效是不会解决他的问题。如果他将一个空id传递给编辑函数,该函数将如何知道要编辑哪个项目? – JCisar 2012-04-05 13:11:34
你能告诉我们你的看法吗? – mattytommo 2012-04-05 13:05:08