求教:ASP.Net MVC 路径问题

仙剑 2011-08-01 09:56:12
最近用ASP.Net MVC 做了个文档系统,开发过程中我一直用VS自带的服务器测试,可是发布到IIS上发现好多连接、图片的路径都不对,在网上搜了一些资料,可是还是不大明白,一下几个问题:

1、ASPX页面中使用Url.Content,会报错,说是当前页面上下文不存在Url.Content。我在<link href="">中用Url.Content都是可以的,可是在<img src="">中使用Url.Content就会报错,不管是VS自带的服务器还是IIS服务器都会有此错误。

2、'~/images/1.jpg' 与 '/images/1.jpg' 与 '../images/1.jpg’ 具体有什么区别,我只知道第三个是相对路径(在MVC中用相对路径容易出错),前两个路径方式好像都是相对网站根目录的,用VS自带的服务器测试是没有什么问题,可是在IIS上网站的根目录是什么(我网站可能放到IIS的根目录里,也可能在IIS中创建虚拟目录的)


请高手指教,另有高分赠送!
...全文
3912 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
yeeyuu 2014-03-21
  • 打赏
  • 举报
回复
内容中的图片怎么用Url.Content,用什么办法?
lsj123d 2014-02-27
  • 打赏
  • 举报
回复
这样每个页面都要修改不是很麻烦吗?mvc 值得用吗?
fmjob 2012-02-06
  • 打赏
  • 举报
回复
我的结论根楼主的应该是有差异的:
1、MVC中应该是提倡用Url.Content这个模式的,这个会帮你自动转化路径(后边会讲如何转化)的。
2、如果你的页面有多个访问地址时,相对路径会无法解析正确,主要是针对下面这种情况:一个页面无参数是路径是http://****/***来访问,有参数(比如有个ID参数,值为“sss")时可以通过http://****/***/sss或http://****/***?id=sss来访问(针对默认的),但是使用相对路径时,如果
http://****/***正常,那么用http://****/***/sss访问时肯定是有问题的。
3、 ~/ 图片链接中不支持直接使用这个,结合Url.Content是可以用
仙剑 2011-08-04
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 msdnxgh 的回复:]

引用 10 楼 liuqian4243 的回复:
IIS中貌似不认 ~/ 表示法

好像有个属性,"启用父路径"的选项,可以试一下是否管用.

就是要启用父路径啊
[/Quote]

那这个父路径指得是IIS的根目录,还是建立的虚拟目录呢?
jianshao810 2011-08-04
  • 打赏
  • 举报
回复
我一直都 直接 用
/ 表示根目录。

MSDNXGH 2011-08-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 liuqian4243 的回复:]
IIS中貌似不认 ~/ 表示法

好像有个属性,"启用父路径"的选项,可以试一下是否管用.
[/Quote]
就是要启用父路径啊
仙剑 2011-08-04
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 mamxfx 的回复:]

讨论的好好啊。我本来想发表来。上边都说完了。我就顶一下
[/Quote]

11楼的贴友想发表什么看法,说来听听呀!
mamxfx 2011-08-03
  • 打赏
  • 举报
回复
讨论的好好啊。我本来想发表来。上边都说完了。我就顶一下
Ny-6000 2011-08-03
  • 打赏
  • 举报
回复
IIS中貌似不认 ~/ 表示法

好像有个属性,"启用父路径"的选项,可以试一下是否管用.
仙剑 2011-08-03
  • 打赏
  • 举报
回复
感谢各位贴友的帮助,目前我的问题已经解决了,现在总结一下MVC中图片路径的问题:


1、Css文件中背景图片的路径,相对与Images文件夹的路径,如:../Images/icon.jpg。

2、View页面中图片的路径,使用ResolueUrl ,如:<img src="<%=ResolveUrl("~/Images/logo.png") %>"/>,不能使用Url.Content ,会报错的。为什么,我还解释不清楚。

3、View页面中<link>标签中使用Url.Content没有错误。

4、IIS中貌似不认 ~/ 表示法

大家还有什么问题,快点贴出来,下次我要结贴了,呵呵!
最最不静 2011-08-02
  • 打赏
  • 举报
回复
你这个是报错还是不显示图片,你的图片是放在哪个文件夹的?如果你的图片放在域(Areas)中的话,因为MVC路由配置的问题,这个是不能识别的
Lisliefor 2011-08-02
  • 打赏
  • 举报
回复
使用Url.Content是王道。

不能用的原因是什么?如果你用的asp.net mvc 2,如果要使用<%: Url.Content("") %>,必须确定新建的是asp.net mvc 2的视图页,新建webform视图页是不能识别的。
仙剑 2011-08-02
  • 打赏
  • 举报
回复
MVC 只能用跟目录的方式,不能用相对路径,所以我觉得根目录很重要,我用 ~/ , /,貌似都不行,IIS中根目录指的应该是IIS的根目录而不是建立的虚拟目录
仙剑 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wxr0323 的回复:]

default.aspx
默认目录下
/defalult.aspx
当前目录下
../default.aspx
上一层目录下
~/表示根目录下
[/Quote]

当前目录是什么意思,字面上跟默认默认目录一样嘛
仙剑 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 msdnxgh 的回复:]

不是的,你图片路径不对,因为你没写对
'~/‘表示根目录 “../”表示上一级目录

其它是你没有细心。

你看看view在那几级目录?

假设图片放在网站根目录下img文件夹

那么视图的图片路径应该是../../img/aa.jpg

视图至少在两层文件夹下,第一层是Views文件夹,第二层控制器名文件夹
[/Quote]

我的View里是这样写的

../../Images/1.jpg

可是在IIS里浏览就显示不了图片了
MSDNXGH 2011-08-01
  • 打赏
  • 举报
回复
有些情况,输入../img/aa.jpg在VS浏览下,也可能正常浏览图片,我有试过,但在IIS就不行了。你发布前先用IIS浏览啊
MSDNXGH 2011-08-01
  • 打赏
  • 举报
回复
不是的,你图片路径不对,因为你没写对
'~/‘表示根目录 “../”表示上一级目录

其它是你没有细心。

你看看view在那几级目录?

假设图片放在网站根目录下img文件夹

那么视图的图片路径应该是../../img/aa.jpg

视图至少在两层文件夹下,第一层是Views文件夹,第二层控制器名文件夹
子夜__ 2011-08-01
  • 打赏
  • 举报
回复
default.aspx
默认目录下
/defalult.aspx
当前目录下
../default.aspx
上一层目录下
~/表示根目录下

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧