tutorial net mvc libro español asp asp.net asp.net-mvc

mvc - ¿Cuál es la forma más eficiente de realizar el reverso de Server.MapPath en una aplicación ASP.Net?



libro asp.net mvc 5 español (3)

Por el momento no conozco ningún método incorporado para hacerlo, pero no es difícil, lo hago así:

  • Necesitamos obtener la raíz de la aplicación y reemplazarla en nuestra nueva ruta con ~
  • Necesitamos convertir las barras diagonales inversas a barras oblicuas

public string ReverseMapPath(string path) { string appPath = HttpContext.Current.Server.MapPath("~"); string res = string.Format("~{0}", path.Replace(appPath, "").Replace("//", "/")); return res; }

Estoy construyendo una aplicación MVC en la que estoy leyendo una lista de archivos del sistema de archivos y quiero pasar la URL relativa a ese archivo a la vista, preferiblemente con el prefijo "~ /" para que cualquier vista que se seleccione, haga que el URL apropiadamente.

Para hacer esto, necesito enumerar los archivos en el sistema de archivos y convertir sus rutas físicas a URLs relativas. Hay algunos algoritmos con los que he experimentado, pero estoy preocupado por la eficiencia y las operaciones de cadena mínimas. Además, creo que no hay nada en .Net Framework que pueda realizar esta operación, pero ¿hay algo en la última versión de MVC que pueda?