2016-05-16 8 views
3

Ich begann gerade mit dem Routing in meiner Webanwendung und während ich viele Tutorials gelesen habe, was Routing ist und wie ein RouteConfig.cs schreiben oder Attribute-Routing innerhalb meiner Controller verwenden, sehr wenige Tutorials zeigen wirklich, wie man eine ganze Anwendung behandelt.Wie route ich POST und GET in Mvc 5

Wie die meisten Asp.NET Mvc-Anwendungen, wenn Sie Ihren Controller scaffold erhalten Sie Ihre erstellen, bearbeiten, entfernen Methoden und Sie haben immer eine zu GET und eins zu POST.

Aber wie umgehen Sie das Routing bei diesen Methoden?

Angenommen, das sind meine Edit-Methoden, was setze ich auf die Post-Methode für das Routing? Und muss ich irgendetwas anderes "reparieren", damit dieses Routing funktioniert, wenn ich auf die Schaltfläche "Speichern" klicke?

// 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

Die zu bearbeitende 'HttpPost' benötigt die gleiche Route – Nkosi

Antwort

2

Wenn Sie das Attributrouting verwenden, haben die Aktionen GET und POST beide das gleiche Routenattribut. Das einzige, was anders sein kann, ist, wenn Sie Ihre Routen benennen, in diesem Fall sollte der Name nur auf der GET-Version gehen. Sie können nicht denselben Namen auf zwei verschiedene Routen anwenden, auch wenn sie effektiv die selbe Route sind.

+0

Ich dachte, es wäre etwas so einfach und offensichtlich, dass sie es nirgends erwähnen würden. Vielen Dank – Vahx