获取' 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为空。
我错过了什么?
感谢。
答案 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)