我的观点中到处都有Url.Content()
片段。它们在具有简单 URL 的页面上工作正常,但当 URL 变长时就不行了。
这是一个示例:
<img src="@Url.Content("~/Content/Images/logo.png")" id="logo">
当我在主页或带有 URL 的页面localhost:8080/s/chocolate
(显示“巧克力”搜索的结果时,这可以正常工作。
但是当我尝试添加一些改进时,例如localhost:8080/s/chocolate/b/lindt
(这意味着将以前的结果过滤到仅来自品牌 Lindt 的结果),它不再起作用了。在这种情况下,Url.Content
指向/s/chocolate/Content/Images/logo.png
,这显然失败了。
就好像Url.Content
只将当前位置提升了 2 级,而不是使用 Web 应用程序的真正根目录。我想 URL 采用host/controller/action形式的约定是有意义的,但这里我有一个更复杂的 URL 方案(我使用 URL 重写器模块将这些 URL 片段与操作的参数匹配)。
有没有办法告诉助手去真正的根,或者这个问题的任何其他解决方案?
(顺便说一句,我正在使用 MVC 4)
编辑: 正如 Felipe 回答的那样,我刚刚发现 Url.Content 不再需要 MVC 4。这适用于所有具有恒定路径的“设计”图像。但是,我使用了很多图像,其中路径部分是用一些数据构建的,例如
<img src="@Url.Content(string.Format("~/Content/Images/stores/{0}.png", cart.Store.Retailer.Id))"/>
我只是删除了 Url.content,如下所示:
<img src="@string.Format("~/Content/Images/stores/{0}.png", Model.PreferedCart.Store.Retailer.Id)"/>
渲染时,这会给出以下 src: ~/Content/Images/stores_v2/Fr_SimplyMarket.png
. 仍然在这里~
,找不到图像。我该如何解决?