如何在Mvc 5中路由POST和GET请求

5
我刚开始学习web应用程序中的路由,虽然我已经阅读了许多有关路由是什么以及如何编写RouteConfig.cs或在我的控制器中使用属性路由的教程,但很少有教程真正展示如何处理整个应用程序。
像大多数Asp.NET Mvc应用程序一样,当您生成控制器时,您会得到创建、编辑和删除方法,并且您始终有一个用于GET和一个用于POST
但是,您如何处理这些方法的路由呢?
例如,这是我的编辑方法,我在post方法上放什么来进行路由?当我点击“保存”按钮时,我需要“修复”其他任何内容才能使该路由工作吗?
   // GET: VehicleModels/Edit/5
    [Route("Aanbod/Edit/{id:int}")]
    public ActionResult Edit(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        VehicleModels vehicleModels = db.VehicleModels
            .Include(v => v.Options)
            .Include(v => v.Fotos)
            .SingleOrDefault(v => v.Id == id);

        if (vehicleModels == null)
        {
            return HttpNotFound();
        }
        return View(vehicleModels);
    }

    // POST: VehicleModels/Edit/5        
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit(int? id, IEnumerable<HttpPostedFileBase> uploads)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        var VehicleToUpdate = db.VehicleModels.Find(id);
        if (TryUpdateModel(VehicleToUpdate))

        // my code here

        return View(VehicleToUpdate);

    }

1
HttpPost 到编辑也需要相同的路由。 - Nkosi
1个回答

4
如果您正在使用属性路由,GET和POST操作都将具有相同的路由属性。唯一可能不同的是如果您为路由命名,则名称只应在GET版本上使用。即使它们实际上是相同的路由,您也不能将相同的名称应用于两个不同的路由。请注意保留HTML标记。

我想这一定是非常简单和显而易见的事情,以至于他们没有在任何地方提到它。谢谢。 - Vahx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接