2010-09-10 21 views
6

Der folgende Code ist ein schrecklicher Hack.So erhalten Sie die Stamm-URL

Uri linkUri = HttpContext.Current.Request.Url; 
string link = linkUri.ToString().Substring(0, linkUri.ToString().IndexOf("Users/Create")); 

Anstatt die Zeichenfolge zu bearbeiten, wie bekomme ich die richtige Route Url an erster Stelle?

Zum Beispiel möchte ich http://localhost:9999/ statt http://localhost:9999/Users/Create

Antwort

9

Es ist ziemlich hässlich, aber wie wäre es:

Uri uri = new Uri("http://localhost:9999/Users/Create"); 
string link = string.Format("{0}://{1}:{2}", uri.Scheme, uri.Host, uri.Port); 

bearbeiten : oder noch besser:

uri.GetLeftPart(UriPartial.Authority) 
+1

Ja, das ist sicherlich eine Verbesserung zu bekommen. Ich werde warten und sehen, was andere Antworten, die ich bekommen, aber das ist bei weitem das beste. – arame3333

+1

dies eine Arbeit für localhost – ktutnik

17
erhalten

Sie die Content Methode von UrlHelper verwenden:

string root = urlHelper.Content("~/"); 
+0

Ich erhalte eine Fehlermeldung; „Eine Objektreferenz für die nicht-statische Feldmethode erforderlich oder Eigenschaft‚System.Web.Mvc.UrlHelper.Content (string)‘“ – arame3333

+1

Ja, müssen Sie einen Verweis auf einen UrlHelper. Wenn Sie diesen Code in einem Controller schreiben, verfügen Sie bereits über die Eigenschaft 'Url', auf die Sie die' Content'-Methode anwenden können. Wenn es in einer Ansicht ist: '<% = Url.Content (" ~/")%>'. –

+1

Ich verwende diesen Code nicht in einer Ansicht. Ich codiere innerhalb einer Klasse, in der UrlHelper keine Content-Methode hat. – arame3333