In this MVC5 project, I want my Details page to also serve as Edit page and Delete page.

I'm tackling this task by creating 2 forms, one with everything needed to update the data, including the submit button.

```
@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

    @Html.HiddenFor(model => model.EmpresaID)
    ...
    <input type="submit" class="btn btn-primary" value="Submeter" />
}

```

Now, for my second form, I basicly have a Delete button:

```
@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    @Html.HiddenFor(model => model.EmpresaID)
    <input type="submit" class="btn btn-danger" value="Delete" />
}

```

Error:

> 
> The parameters dictionary contains a null entry for parameter 'id' of
>  non-nullable type 'System.Int32' for method
>  'System.Threading.Tasks.Task`1[System.Web.Mvc.ActionResult]
>  DeleteConfirmed(Int32)'
> 
> 
> 

I tried to use a ActionLink, but then I get a HTTP 404. Which is odd, since I am being sent to the correct destination:

```
@Html.ActionLink("Delete", "Delete", new { id = Model.EmpresaID })

```

Sends to

```
.../Empresa/Delete/6

```

**EDIT1**

Action Method:

```
// POST: Empresa/Delete/5
        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> DeleteConfirmed(int id)
        {
            Empresa empresa = await db.Empresas.FindAsync(id);
            db.Empresas.Remove(empresa);
            await db.SaveChangesAsync();
            return RedirectToAction("Index");
        }

```

**EDIT2**

Action Method

```
// POST: Empresa/Delete/5
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Delete([Bind(Include = "EmpresaID,Nome,Estado,Severidade,Inicio,Fim")] Empresa empresa)
{
    //Do something with the posted viewModel
    Empresa e = await db.Empresas.FindAsync(empresa.EmpresaID);

    db.Empresas.Remove(e);

    return RedirectToAction("Index");
}

```

Details.cshtml:

```
@using (Html.BeginForm("Delete", "Empresa", FormMethod.Post))
{
    @Html.AntiForgeryToken()
    @Html.HiddenFor(model => model.EmpresaID)
    @Html.ActionLink("Delete", "Delete", new { id = Model.EmpresaID })
    <button type="submit" class="btn btn-danger" value="Delete">Delete</button>
}

```

The ActionLink does not show any errors, but it doesn't delete anything either.

The Button gives me a HTTP 404. What am I doing wrong here?

**EDIT3**

```
    // POST: Empresa/Delete/5
    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Delete([Bind(Include = "EmpresaID,Nome,Estado,Severidade,Inicio,Fim")] Empresa empresa)
    {
        //Do something with the posted viewModel
        Empresa e = await db.Empresas.FindAsync(empresa.EmpresaID);

        db.Empresas.Remove(e);
        await db.SaveChangesAsync();
        return RedirectToAction("Index");
    }

```

The only problem with EDIT2 was that I forgot to save the changes.

It's now working properly.