【问题标题】:ASP MVC Friendly URL's and Relative Path ImagesASP MVC 友好的 URL 和相对路径图像
【发布时间】:2010-08-02 20:33:47
【问题描述】:

我有一个 ASP.NET MVC 页面,我试图在其中显示友好的 URL。

所以,我在 Home Controller 中有一个 Category View,它接受 categoryKey 值来获取页面的内容。

例如:http://localhost/Home/Category/Bikes 获取自行车内容。

在我的 Global.asax.cs 中,我有以下处理方法:

public static void RegisterRoutes(RouteCollection routes)
{
  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

  routes.MapRoute(
      "Category",
      "{controller}/{action}/{categoryKey}",
      new { controller = "Home", action = "Category", categoryKey = "" });

  routes.MapRoute(
      "Default", // Route name
      "{controller}/{action}/{id}", // URL with parameters
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
  );
}

这很好用,它可以获取内容,但是,我从内容管理系统获取内容,以便于编辑。当您在内容管理上添加图像时,它会添加具有相对路径的图像:

<img src="../AdminUploadContent/bikes.gif" alt="Bikes" />

现在,如果我转到“http://localhost/Home/Category”,并且该图像标签位于基本页面上,它将拉出图像。但是,如果我转到“http://localhost/Home/Category/”,或添加“/Home/Category/Bikes”/ 的实际类别,图像不会显示。图片的属性指向“http://localhost/Home/AdminUploadContent/bikes.gif”。

我可以在 Global.aspx.cs 文件中放入什么来处理相对路径吗?即使我手动编辑内容管理以添加 ../../AdminUploadContent/bikes.gif,它也会切断第一个 ../,因为它正在进行一些验证。

【问题讨论】:

    标签: asp.net-mvc relative-path


    【解决方案1】:

    在生成图像路径时使用Url.Content 方法。

    <img src="@Url.Content("~/AdminUploadContent/bikes.gif")" />
    

    或者如果使用 WebForms 视图引擎:

    <img src="<%= Url.Content("~/AdminUploadContent/bikes.gif") %>" />
    

    【讨论】:

    • runat="server" 我认为在这种情况下不需要
    • @marcind,嗨,我在数据库中将 Imagepath 保存为:c://user/tom/images,我无法在视图中检索它,为什么?
    【解决方案2】:

    您可以使用相对路径“~/”来引用页面所在的当前虚拟目录。尝试将 runat="server" 属性添加到您的 "img" 标记和 "~" 登录 "src" 属性:

    <img runat="server" src="~/AdminUploadContent/bikes.gif" alt="Bikes" />
    

    【讨论】:

    • 我不建议将 asp.net Webforms 成语与 asp.net mvc 混合使用。坚持这个
    【解决方案3】:

    这也有效。

    <img src="@Url.Content("~/Images/yourimage.png")"/>
    

    【讨论】:

      【解决方案4】:

      您可以实现一个自定义 http 模块,该模块会将路径从相对 ../../img.png 重写为需要处理的 Referer http 标头。

      【讨论】:

        猜你喜欢
        • 2016-10-28
        • 2018-11-05
        • 1970-01-01
        • 2010-09-11
        • 2011-04-06
        • 2013-09-03
        • 2012-09-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多