C# 找不到请求url
我这样做:C# 找不到请求url,c#,asp.net,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,我这样做: http://localhost:53072/Employee/Delete/2 这就是我的行动: [HttpPost] public ActionResult Delete(int id) { _provider.Delete(id); return View(); } 为什么不在控制器操作删除中触发?假设您通过浏览器访问url,它将发出GET请求,并且您的操作是POST 您可以使用
http://localhost:53072/Employee/Delete/2
这就是我的行动:
[HttpPost]
public ActionResult Delete(int id)
{
_provider.Delete(id);
return View();
}
为什么不在控制器操作删除中触发?假设您通过浏览器访问url,它将发出
GET
请求,并且您的操作是POST
您可以使用fiddler之类的工具更改请求,也可以将方法改为:
[HttpGet]
public ActionResult Delete(int id)
{
_provider.Delete(id);
return View();
}
您还可以省略[HttpGet]
,因为它是默认值
更新
为了将此作为帖子而不是使用ActionLink,您可以执行以下操作:
将其添加到视图中,并将其包装为begin表单
@using(Html.BeginForm("Delete", "Controller", FormMethod.Post))
{
@Html.HiddenFor(m => m.Id)
<input type="submit" value="delete" />
}
控制器名称是什么?定义“我做这个”。如果“做这个”是指直接在浏览器中输入该URL,那么您发出的是
GET
请求(请求资源时的默认值)。代码使用HttpPost
属性显式过滤POST
请求。当我单击我的删除操作链接时,为什么这是一个Get?删除是一个Http Post imho!不是吗?一个动作链接会发出一个get。将其包装在表单中,并改用“提交”按钮。@Pascal请参阅更新。这就是使用表单post的解决方案。:)另外,请记住将@Html.AntiForgeryToken()和[ValidateAntiForgeryToken]放在这周围。不希望其他人从您的数据库中删除用户。:)
[HttpPost]
public ActionResult Delete(int id)
{
_provider.Delete(id);
return View();
}