如何解决相对于ASP.NET MVC 4应用程序根目录的path?
如何解决相对于ASP.NET MVC 4应用程序根目录的path? 也就是说,我想打开属于控制器操作的应用程序的文件,例如~/Data/data.html
。 这些path通常在Web.config
指定。
编辑:
通过“解决”我的意思是将相对于应用程序根目录的path转换为绝对path, ~/Data/data.html
→ C:\App\Data\Data.html
。
获取绝对path使用这个:
String path = HttpContext.Current.Server.MapPath("~/Data/data.html");
编辑:
从上面的行中获取Controller的上下文。 通过HttpContext
使用HttpContext
,testing更容易,因为它基于Controller的上下文,因此更加本地化。
我现在意识到,我不喜欢如何Server.MapPath
工作原理(内部最终调用HostingEnvironment.MapPath
)所以我现在推荐总是使用HostingEnvironment.MapPath
因为它的静态和不依赖于上下文,除非你想要的… … –
当我需要一个控制器之外的path时,例如当我在Global.asax.cs中初始化组件时,我发现这个代码很有用:
HostingEnvironment.MapPath("~/Data/data.html")
只要使用以下
Server.MapPath("~/Data/data.html")
在行动中你可以打电话:
this.Request.PhysicalPath
返回参考当前控制器的物理path。 如果您只需要根path调用:
this.Request.PhysicalApplicationPath
- URL中的点导致404与ASP.NET mvc和IIS
- 在ASP.NET MVC中更改视图的布局(主页)而不重新创build它
- 如何让jQuery的Uploadify插件与ASP.NET MVC一起使用?
- 上传文件与ASP.Net MVC – 获取名称,但没有文件stream,我做错了什么?
- 如何清除glyphicons-halflings-regular.woff2错误not found
- Html.LabelFor指定文本
- 嘲笑Asp.net-mvc控制器上下文
- 如何在ASP.NET MVC 3中创build自己的脚手架模板?
- MVC和Razor中的Html.TextboxFor和Html.EditorFor之间的区别