2016-06-22 11 views
0

ich folgendes in meinem RouteConfig.csASP.NET Route Ausgabe

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapMvcAttributeRoutes(); 

    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 

Home Controller-Datei hat die folgende:

[Route("NewIncident")] 
public ActionResult NewIncident() 
{ 
    var viewModel = new IncidentFormViewModel(); 
    viewModel.NextPage = 2; 
    return View("NewIncident",viewModel); 
} 

[Route("EditIncident/{id?}")] 
public ActionResult EditIncident(int? id) 
{ 
    return View("EditIncidentPage" + id); 
} 

[Route("SaveIncident")] 
public ActionResult SaveIncident(IncidentFormViewModel incidentviewmodel) 
{ 

    return RedirectToAction("EditIncident/" + incidentviewmodel.NextPage); 
} 

Aus meiner Indexansicht kann ich auf einen Knopf klicken, das hat wie folgt das @ Html.ActionLink:

@Html.ActionLink("New Incident", "NewIncident", "Home", null, new { @class = "btn btn-primary" }) 

ich auf die Website unter http://sitename/ und es lädt meine Index-Seite. Ich kann die Neuer Vorfall Schaltfläche klicken und es lädt http://sitename/NewIncident ganz gut, aber wenn ich auf die Schaltfläche Speichern auf dem Formular Neuer Vorfall klicken, ruft sie die SaveIncident Funktion nur in Ordnung, aber wenn er trifft die return RedirectToAction("EditIncident/" + incidentviewmodel.NextPage); es mir, anstatt nur zu http://sitename/Home/EditIncident/2 sendet http://sitename/EditIncident/2 .

Irgendeine Idee, warum es die /Home dort hinzufügt?

+1

„sendet er mir' http: // sitename/Home/EditIncident/2' statt nur 'http: // sitename/Startseite/EditIncident/2' "Diese sehen identisch aus. Was hast du versucht zu sagen? – ErikE

+0

Sie fügt hinzu, die '/ Home' vor dem'/EditIncident/2'. Aber wenn ich NewIncident Schaltfläche aus der Index-Ansicht klicken, sendet sie mich an die 'NewIncident' Aktion, die auch innerhalb des' HomeController' lebt, aber die '/ Home' vor ihm nicht hinzugefügt werden. –

+0

bearbeitet, um Tippfehler-Korrektur Pfadname –

Antwort

0

Die Teile der URL sind http://sitename/Controller/Action/Parameter.

Ihr EditIncident ActionResult lebt in Ihrem Home Controller, und Sie werden daher immer Home vor EditIncident sehen.

Wenn Sie zu einer anderen Aktion umleiten, können Sie angeben, welcher Controller in RedirectToAction("ActionName", "ControllerName") nach dem ActionResult suchen soll. Wenn kein Controller angegeben ist, wird davon ausgegangen, dass Sie den gleichen Controller verwenden möchten, den Sie gerade verwenden.

0

Ja, Tot Zam sind in Ordnung, und Sie müssen eine Aktion Ergebnismethode auf Ihrem Controller erstellen, sollte dies mit Bind sein eine Ansicht

0

Das Problem gefunden.

Anscheinend muss ich Redirect(), nicht RedirectToAction() für meine Zwecke verwenden.

Einmal habe ich das geändert, es die richtige URL gemacht, ohne Zusatz /Home es