2010-11-27 15 views
24

Wie erzeuge ich eine absolute URL aus dem C# -Code?ASP.NET MVC erstellen absolute URL von C# code

Ich möchte eine URL wie folgt generieren: localhost/{controller}/{action}/{id}. Gibt es eine Möglichkeit, es in C# zu tun, wie es in den Ansichten gemacht werden kann?

Es wird nicht innerhalb des Controllers, sondern in einem ViewModel generiert.

Antwort

66

Fügen Sie einfach Request.Url.Scheme hinzu. Dadurch wird der URL ein Protokoll hinzugefügt, das die Generierung einer absoluten URL erzwingt.

+1

Danke, das war so gut versteckt, dass ich fast 'Url.RouteUrl' benutzt habe. – Peter

+3

Und wenn Sie eine voll qualifizierte URL mit der Url.Action ("Index") - Überladung generieren möchten (wo Sie den Controller nicht angeben), übergeben Sie einfach ** null ** als Controller-Parameter. Dies führt zu: 'Url.Action (" Index ", null, null, Request.Url.Scheme)'. –

0

Wenn Sie nicht möchten, zu „bauen“ die URL und wollen einfach nur den vollständigen Pfad der aktuellen Seite, wird dies tun, den Trick

Context.Server.UrlEncode(Context.Request.Url.AbsoluteUri)

Ich weiß, es ist nicht so elegant wie eine Verlängerung Verfahren aber Gedanken daran zu Bildungszwecken

0

Ab neuesten Update zu MVC teilen können Sie unter overload verwenden für Url.Action

string url=Url.Action("ActionName", "Controller", 
         new RouteValueDictionary(new { id= someid }), 
                 //url param 
         HttpContext.Request.Url.Scheme, 
         HttpContext.Request.Url.Host); 

die

http://localhost:port/Controller/ActionName?id=someid