【问题标题】:Request url is not found未找到请求网址
【发布时间】:2014-03-18 14:38:39
【问题描述】:

我这样做:

http://localhost:53072/Employee/Delete/2

这就是我的行动:

[HttpPost]
        public ActionResult Delete(int id)
        {
            _provider.Delete(id);
            return View();
        }

为什么它没有在控制器动作 Delete 中触发?

【问题讨论】:

  • 控制器名称是什么?
  • 定义“我这样做”。如果“执行此操作”是指直接在浏览器中输入该 URL,那么您将发出 GET 请求(请求资源时的默认设置)。该代码使用HttpPost 属性显式过滤POST 请求。

标签: c# asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4


【解决方案1】:

假设您通过浏览器访问该 url,它将发出 GET 请求,而您的操作是 POST

您可以使用 fiddler 之类的工具更改您的请求,也可以将您的方法更改为:

    [HttpGet]
    public ActionResult Delete(int id)
    {
        _provider.Delete(id);
        return View();
    }

您也可以省略 [HttpGet],因为它是默认值。

更新

为了使这篇文章成为帖子而不是使用 ActionLink,您可以执行以下操作:

将此添加到您的视图中,将其包装在一个开始表单中

@using(Html.BeginForm("Delete", "Controller", FormMethod.Post))
{
    @Html.HiddenFor(m => m.Id)
    <input type="submit" value="delete" />
}

留下你的行动如下:

    [HttpPost]
    public ActionResult Delete(int id)
    {
        _provider.Delete(id);
        return View();
    }

【讨论】:

  • 当我单击我的删除操作链接时,为什么这是一个获取?删除是 Http Post 恕我直言!不是吗?
  • 一个操作链接发出一个get。将其包装在一个表单中并使用提交按钮。
  • @Pascal 查看更新。那是使用表单帖子的解决方案。 :)
  • 另外请记住在此周围加上@Html.AntiForgeryToken() 和 [ValidateAntiForgeryToken]。不希望其他人从您的数据库中删除用户。 :)
猜你喜欢
  • 1970-01-01
  • 2014-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多