2010-09-10 25 views
6

Aşağıdaki kod korkunç bir saldırıdır. Kök URL'si nasıl alınır

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

yerine dize düzenleme

, nasıl ilk etapta doğru rota Url alabilirim?

Mesela ben Sen UrlHelper ait Content yöntemi kullanabilirsiniz yerine http://localhost:9999/Users/Create

cevap

9

, ama nasıl hakkında:

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

Düzenleme : veya daha iyisi:

Bu konuda
uri.GetLeftPart(UriPartial.Authority) 
+1

alıyorum sanki bu kesinlikle bir gelişmedir. Bekleyeceğim ve başka hangi cevapları aldığımı göreceğim ama bu şimdiye kadarki en iyisi. – arame3333

+1

localhost – ktutnik

17

ait http://localhost:9999/ almak istiyorum:

Oldukça çirkin
string root = urlHelper.Content("~/"); 
+0

Bir hata mesajı alıyorum; "Statik olmayan alan yöntemi veya özellik 'System.Web.Mvc.UrlHelper.Content (string)'" – arame3333

+1

için bir nesne başvurusu gereklidir. Evet, bir UrlHelper'a başvurmanız gerekir. Bu kodu bir denetleyicide yazıyorsanız, zaten 'İçerik' yöntemini çağırmak için kullanabileceğiniz 'Url' özelliğine sahipsiniz. Görüntüdeyse: '<% = Url.Content (" ~/")%>'. –

+1

Bu kodu bir Görünümde kullanmıyorum. UrlHelper'ın bir İçerik yönteminin olmadığı bir sınıfta kod yapıyorum. – arame3333