C# ASP.NET MVC 3删除Http Post

C# ASP.NET MVC 3删除Http Post,c#,asp.net-mvc-3,razor,C#,Asp.net Mvc 3,Razor,我一直在网上寻找如何只删除HttpPost而不删除get,我已经读到,做一篇post而不是get更安全,所以这就是我想要做的 [HttpPost] public ActionResult Delete(Guid id) { var member = GetSelectedMember(id); _repository.DeleteEntity(member); TempData["message"] = String.

我一直在网上寻找如何只删除HttpPost而不删除get,我已经读到,做一篇post而不是get更安全,所以这就是我想要做的

    [HttpPost]
    public ActionResult Delete(Guid id)
    {

        var member = GetSelectedMember(id);

        _repository.DeleteEntity(member);

        TempData["message"] = String.Format("Blog {0} has been deleted!", member.Name);

        return RedirectToAction("Index");
    }
这是我的发帖方法

@using (Html.BeginForm("Delete", "Member", FormMethod.Post, new { id = item.ID }))
{
    <input type="image" src="Content/delete.png" />
}
@使用(Html.BeginForm(“Delete”,“Member”,FormMethod.Post,new{id=item.id}))
{
}
这是我的观点

下面是我得到的错误

参数字典包含“GenericSaving.Controllers.MemberController”中方法“System.Web.Mvc.ActionResult Delete(System.Guid)”的不可为null类型“System.Guid”的参数“id”的null条目。可选参数必须是引用类型、可为null的类型或声明为可选参数。 参数名称:参数

因此,我不能中断该方法,因为它在此之前会ping错误,我的第一个猜测是它没有将Guid ID传递给参数。那么根据我的表格,出了什么问题


我想也许作为一个解决方案,我可以把它放在表单上的一个隐藏字段中?如何在post方法中收集此字段的内容?

您对beginForm使用了错误的重载方法。检查用法是否正确。这样使用:

Html.BeginForm("action","controller", new { Id = item.ID}, FormMethod.Post);

@使用(Html.BeginForm(“Delete”、“Member”、FormMethod.Post))
{
@Html.Hidden(“id”,item.id)
}

中断
Html.BeginForm(“删除”,“成员”,FormMethod.Post,new{id=item.id}
并查看
item.ID
在将其分配给querystring对象时所保留的内容。好吧,我猜您是在回答我的解决方案,那么第二位在哪里,也许还有一些解释?当querystring已经保留值时,是否真的有必要使用隐藏字段???
new{ID=item.ID}
我会在9分钟内接受这个答案,如果它允许我:)那么,你真的需要声明这个表单发布吗?我的表单是否发布了enum post的int?
@using (Html.BeginForm("Delete", "Member", FormMethod.Post))
{
    @Html.Hidden("id", item.ID)
    <input type="image" src="Content/delete.png" />
}