2010-09-10 11 views
6

El siguiente código es un hack terrible.Cómo obtener el Root raíz

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

En lugar de editar la cadena, ¿cómo puedo obtener la URL ruta correcta en el primer lugar?

Por ejemplo quiero conseguir http://localhost:9999/ en lugar de http://localhost:9999/Users/Create

Respuesta

9

Es bastante feo, pero ¿qué tal:

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

Editar : o mejor aún:

uri.GetLeftPart(UriPartial.Authority) 
+1

Sí, esto es sin duda una mejora. Voy a esperar y ver qué otras respuestas obtengo, pero esto es lo mejor hasta ahora. – arame3333

+1

éste trabajo para localhost – ktutnik

17

Se puede usar el método de UrlHelperContent:

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

Aparece un mensaje de error; "Se requiere una referencia de objeto para el método de campo no estático, o la propiedad 'System.Web.Mvc.UrlHelper.Content (cadena)'" – arame3333

+1

Sí, necesita una referencia a un UrlHelper. Si está escribiendo este código en un controlador, ya tiene la propiedad 'Url' en la que puede invocar el método' Content'. Si está en una vista: '<% = Url.Content (" ~/")%>'. –

+1

No estoy usando este código en una Vista. Estoy codificando dentro de una clase, donde UrlHelper no tiene un método de Contenido. – arame3333

Cuestiones relacionadas