2017-01-24 81 views
1

控制器動作:廣東話通參數到控制器

public ActionResult DeletePost(string id) 
{ 
    this.posts.DeleteById(id); 
    return this.Redirect("/Posts/All"); 
} 

檢視:

@Html.ActionLink("DeletePost", "DeletePost", "Posts", new { id = post.Id }) 
當我調試I可以看到,post.Id被分配在視圖中正確的值

。 但是,一旦我到達控制器操作,字符串ID爲空。

wtf我做錯了嗎?

路由是標準:

routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }); 
+0

除了下面的很好的答案(一個或多個),請也請閱讀這篇文章,它解釋了爲什麼不推薦使用超鏈接來執行DELETE操作:http://stephenwalther.com/archive/2009/01/21/asp-net-mvc-tip-4 6-ndash-donrsquot-use-delete-links-because –

回答

0

您需要使用ActionLink像這樣(注意最後null):

@Html.ActionLink("DeletePost", "DeletePost", "Posts", new { id = post.Id }, null) 

參考this answer

+0

that worked,thanks – cantcodeforshit