Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 找不到请求url_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 3_Asp.net Mvc 4 - Fatal编程技术网

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();
    }