从“查看到编辑”操作方法获取空值而不是Id

时间:2014-09-22 06:59:47

标签: asp.net-mvc asp.net-mvc-5

获取' null'从列表视图到编辑/详细信息/删除操作方法而不是ID。

在列表视图中,在Id列中,它显示相应的ID,没有任何问题。在All.cshtml文件中,

<td>
   @Html.DisplayFor(modelItem => item.ModifiedOn)
</td>
<td>
   @Html.ActionLink("Edit", "Edit", new { id = item.CategoryId }) |
   @Html.ActionLink("Details", "Details", new { id = item.CategoryId }) |
   @Html.ActionLink("Delete", "Delete", new { id = item.CategoryId })
</td>

编辑方法是,

public ActionResult Edit(int? id) {
   if (id == null) {
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
      return View();
   }
   var editCategory = new PetaPoco.Database("DefaultConnection");
   var category = editCategory.Single<CategoryViewModels>("SELECT * FROM Category WHERE   
              CategoryId=@0 AND IsActive = 1", id);
   return View(category);
}

浏览器中的Url是/ Category / Edit / C1。但在编辑/详细信息/删除中,Id为空。

我错过了什么?

感谢。

2 个答案:

答案 0 :(得分:2)

由于网址可以是/Category/Edit/C1,因此控制器操作方法中的id参数不能是int?。尝试将id的类型更改为字符串

public ActionResult Edit(string id) {
   if (string.IsNullOrEmpty(id)) {
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
      return View();
   }
   var editCategory = new PetaPoco.Database("DefaultConnection");
   var category = editCategory.Single<CategoryViewModels>("SELECT * FROM Category WHERE   
              CategoryId=@0 AND IsActive = 1", id);
   return View(category);
}

答案 1 :(得分:1)

&#34; C1&#34;不是int的类型,将其转换为&#34; int?&#34;将得到null。