2014-09-22 37 views
0

從列表視圖獲取'null'爲編輯/細節/刪除操作方法而不是Id。從視圖到編輯操作方法獲取空值而不是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 
       [email protected] AND IsActive = 1", id); 
    return View(category); 
} 

的URL在瀏覽器中是,/類別/編輯/ C1。但在Edit/Details/Delete中,Id爲空。

我錯過了什麼?

謝謝。

+3

其空的時候,蔣URL中包含「C1」作爲最後一個參數...這是int類型沒有。確保數據類型匹配。 – 2014-09-22 07:06:19

回答

1

由於url可以是/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 
       [email protected] AND IsActive = 1", id); 
    return View(category); 
} 
+0

是的,你是對的,非常感謝。 – 2014-09-22 08:43:31

1

「C1」不是int類型,將它轉換爲「int?」將得到空。

+0

是的,你是對的,非常感謝。 – 2014-09-22 08:43:12