URL.Action enthält eine ID beim Erstellen einer URL
Ich bin mit ASP.Net MVC. Hier mein code-Schnipsel von einem controller namens Natürlich:
public ActionResult List(int id)
{
var viewmodel.ShowUrl = Url.Action("Show", "Course");
...
}
public ActionResult Show(int id)
{
...
}
viewmodel.ShowUrl nimmt, was der Wert des "id" - parameter. So viewmodel.ShowUrl wird "/Natürlich/Show/151" (Wert des id ist 151); ich möchte in der Lage sein, den id-Teil auf dem client, basierend auf Benutzer-Interaktion. Ich will den Wert von viewmodel.ShowUrl "/Natürlich/Anzeigen".
Dies scheint ein bug zu mir. Ich bin mir nicht zu erzählen Url.Maßnahmen, um einen id-Wert. Er tut es auf seine eigene. Wenn ich einstellen will das der id-Wert, dann würde ich etwas wie das hier tun:
var viewmodel.ShowUrl = Url.Action("Show", "Course", new {id = somevalue});
Also, wie Sie verhindern, dass MVC aus der addition der id-Wert? Ich kann fest viewmodel.ShowUrl "/Natürlich/Show", aber das scheint ein notdürftigem Lösung. Danke.
Routedata
auf ViewData
und deshalb ist es vergangen. Ich denke, man kann die - Url.Aktion("Show", "Natürlich", new {});
oder leer RouteData
auf ViewData
- Objekt. InformationsquelleAutor der Frage Tom Schreck | 2012-04-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich vermute, in deinem routing, bist du nicht angeben, die id ist ein optionaler parameter. Hier ist der default-route in einem Beispiel-Projekt.
Hinweis: die Aufnahme von
id = UrlParameter.Optional
. Ohne Sie würde sich das Verhalten, das du beschreibst, weil es denkt, die id ist obligatorisch.On a side note, wenn Sie Ihr Show-action muss nicht immer eine id, dann sollte es null-Werte zulässt oder eine Standardeinstellung.
Andernfalls erhalten Sie eine Fehlermeldung, wenn Sie versuchen, laden Sie die url ohne den parameter id.
InformationsquelleAutor der Antwort DMulligan
Kam gerade über dem gleichen problem, und damit Sie wissen, können Sie auch einfach einen leeren string:
InformationsquelleAutor der Antwort Ben Cull
Ich weiß, das ist alt, aber ich fand das erste, aber nicht wie eine dieser Lösungen, also habe ich weiter suchen und fand https://stackoverflow.com/a/19110921/1130636.
Können Sie
UrlParameter.Optional
um dieses problem zu lösenUrl.Action("Show", "Course", new { id = UrlParameter.Optional })
InformationsquelleAutor der Antwort borigas