我应该如何在Mvc 5中路由POST和GET

Vah*_*ahx 5 asp.net-mvc routing asp.net-mvc-routing

我刚开始在Web应用程序中进行路由,并且阅读了许多关于什么是路由以及如何RouteConfig.cs在控制器中编写或使用属性路由的教程,但很少有教程真正显示如何处理整个应用程序。

像大多数Asp.NET Mvc应用程序一样,在脚手架上放置控制器时,您可以创建,编辑,删除方法,并且总是GET一对一POST

但是,如何处理这些方法上的路由?

假设这些是我的Edit方法,那么在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);

    }
Run Code Online (Sandbox Code Playgroud)

Chr*_*att 4

如果您使用属性路由,则 GET 和 POST 操作都将具有相同的路由属性。唯一可能不同的是,如果您为路由命名,在这种情况下,该名称只能出现在 GET 版本上。您不能将相同的名称应用于两条不同的路由,即使它们实际上是相同路由。