2010-09-10 109 views
6

下面的代碼是一個可怕的黑客。如何獲得root Url

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

而不是編輯字符串,我如何才能在第一時間正確的路線網址是什麼?

比如我想http://localhost:9999/代替http://localhost:9999/Users/Create

回答

9

這是非常醜陋的,但如何:

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

編輯:甚至更好:

uri.GetLeftPart(UriPartial.Authority) 
+1

是的,這當然是一種改進。我會拭目以待,看看還有什麼其他答案,但這是迄今爲止最好的。 – arame3333 2010-09-10 08:02:17

+1

這一個工作localhost – ktutnik 2013-05-13 06:39:47

17

你可以使用的UrlHelperContent方法:

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

我收到一條錯誤消息; 「非靜態字段方法或屬性'System.Web.Mvc.UrlHelper.Content(字符串)'」 – arame3333 2010-09-10 07:41:20

+1

需要對象引用是的,您需要對UrlHelper的引用。如果你在控制器中編寫這段代碼,你已經有了'Url'屬性,你可以在其中調用'Content'方法。如果它在視圖中:'<%= Url.Content(「〜/」)%>'。 – 2010-09-10 07:53:04

+1

我沒有在視圖中使用此代碼。我在一個類中編碼,UrlHelper沒有Content方法。 – arame3333 2010-09-10 07:56:23