Frage

Ich habe Probleme eine Action Erstellung mit Vorschau 5. Alle Dokumente Ich beschreibe die älteren generische Version finden können.

Ich konstruieren Links auf einer Liste der Aufträge auf der Seite / Arbeitsplätze. Jeder Job hat eine Guid, und ich möchte einen Link zu / Jobs / details / {guid} konstruieren, so kann ich zeigen Details über den Job. Meine Jobs Controller hat einen Index-Controller und einen Controller Einzelheiten. Die Details der Steuerung nimmt eine guid. Ich habe schon versucht, diese

<%= Html.ActionLink(job.Name, "Details", job.JobId); %>

Doch das gibt mir die URL "/ Jobs / details". Was ich hier fehlt?


Gelöst, mit Ihrer Hilfe.

Route (hinzugefügt, bevor die catch-all Strecke):

routes.Add(new Route("Jobs/Details/{id}", new MvcRouteHandler())
{
Defaults = new RouteValueDictionary(new
    {
    controller = "Jobs",
    action = "Details",
    id = new Guid()
    }
});

Aktion Link:

<%= Html.ActionLink(job.Name, "Details", new { id = job.JobId }) %>

Ergebnisse im HTML-Anker:

  

http: // localhost: 3570 / WebsiteAdministration / Einzelheiten ? id = 2db8cee5-3c56-4861-aae9-a34546ee2113

Also, seine verwirrenden Routen. Ich zog meine Jobs Routendefinition vor der Website admin und es funktioniert jetzt. Offensichtlich KOTZEN meine Strecke Definitionen. Ich muss mehr Beispiele lesen.

Eine Randnotiz, meine Links nicht zeigten, und quickwatches funktioniert nicht (kann nicht einen Ausdruck mit einem anonymen Typ Schnellüberwachung), das machte es sehr viel schwieriger, herauszufinden, was hier los war. Es stellte sich heraus die Aktion Links wurden aufgrund eines sehr geringen Tippfehler nicht angezeigt:

<% Html.ActionLink(job.Name, "Details", new { id = job.JobId })%>

Das wird erhalten mich wieder.

War es hilfreich?

Lösung

Geben Sie diesen einen Schuss:

<%= Html.ActionLink(job.Name, "Details", new { guid = job.JobId}); %>

Wo „guid“ ist der tatsächliche Name des Parameters in Ihrer Route. Dies weist die Routing-Engine, die Sie den Wert der Eigenschaft job.JobId in die Routendefinition guid Parameter platzieren möchten.

Andere Tipps

Haben Sie eine Route festgelegt, dies zu umgehen in Ihrem Global.asax.cs Datei? Die Standardroute ist {Controller} / {Aktion} / {id}. Sie passieren „JobID“, die den Rahmen wird „id“ nicht Karte automatisch. Sie müssen entweder auf das job.id sein ändern oder eine Route definieren diesen Fall ausdrücklich zu behandeln.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top