Ant*_*ine 3 url asp.net-mvc absolute-path asp.net-mvc-4
Url.Content()在我的观点中,我到处都有片段.它们在具有简单URL的页面上工作正常,但在URL变长时则不行.
这是一个示例:
<img src="@Url.Content("~/Content/Images/logo.png")" id="logo">
Run Code Online (Sandbox Code Playgroud)
当我在主页上或带有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有主体/控制器/动作形式是有道理的,但在这里我有一个更复杂的URL方案(我使用URL重写器模块将这些URL片段与动作的参数相匹配).
有没有办法告诉帮助者去真正的根,或任何其他解决这个问题的方法?
(顺便说一下,我正在使用MVC 4)
<img src="@Url.Content(string.Format("~/Content/Images/stores/{0}.png", cart.Store.Retailer.Id))"/>
Run Code Online (Sandbox Code Playgroud)
我只是删除了Url.content,因此:
<img src="@string.Format("~/Content/Images/stores/{0}.png", Model.PreferedCart.Store.Retailer.Id)"/>
Run Code Online (Sandbox Code Playgroud)
渲染时,这给出了以下src : ~/Content/Images/stores_v2/Fr_SimplyMarket.png. 该~暂时还在这里,图像没有发现.我该如何解决这个问题?
Fel*_*ani 11
在ASP.NET MVC 4+中,您不需要使用Url.Content属性值.~/直接使用语法,让razor视图引擎2为您处理路径.因此,您的示例可以编码如下:
<img src="~/Content/Images/logo.png" id="logo">
Run Code Online (Sandbox Code Playgroud)
在您需要创建动态路径的情况下,您必须使用Url.Content,用于示例:
@{
string imagePath = Url.Content("~/Content/Images/stores/" + Model.PreferedCart.Store.Retailer.Id + ".png");
}
<img src="@imagePath"/>
Run Code Online (Sandbox Code Playgroud)
如果它不起作用,原因是您的URL重写器有问题.
| 归档时间: |
|
| 查看次数: |
12177 次 |
| 最近记录: |