Исключить / игнорировать параметр в ImageUrl изображения, но по-прежнему отображать его в репитере - PullRequest
0 голосов
/ 02 января 2012

У меня есть контроль изображения внутри повторителя. Я хотел бы исключить / игнорировать параметр в свойстве imageurl, потому что путь (исходное изображение) не имеет этого параметра в имени, но я все еще хочу показать параметр в URL. И я не могу переименовать все изображения, так как их много. Надеюсь, что это имеет смысл.

Вот пример.

Это для SEO. Оригинальный путь

  • / продукт / 0001_100_00_KK00_F02.png

Что я хочу показать в imageurl

  • / продукт / 0001_100_00_KK00_F02.png / TV-Sony-ЖК-черно-BRAVIA-KDL-26V4500

OR

  • / продукт / 0001_100_00_KK00_F02 / TV-Sony-ЖК-черно-BRAVIA-KDL-26V4500.png
    <asp:Repeater ID="rptImages" runat="server">
        <ItemTemplate>
            <asp:Image ID="Image1" ImageUrl='<%# Eval("Url") %>' runat="server" />
        </ItemTemplate>
    </asp:Repeater>

и код позади

    rptImages.DataSource = Images.Select(s => new { Url = s });
    rptImages.DataBind();

Это прекрасно работает для оригинального пути. Но когда я добавляю /Tv-Sony-lcd-black-bravia-KDL-26V45000 в конец URL, изображения не найдены (конечно).

Итак, как мне добавить дополнительный параметр к imageurl, но получить управление изображением, чтобы игнорировать это и все же найти путь к изображению?

У кого-нибудь есть идеи, как решить эту проблему

Ответы [ 2 ]

0 голосов
/ 02 января 2012

Вы можете достичь этого с помощью перезаписи URL. Добавьте файл global.asax в свой проект и используйте какую-то логику переписывания, подобную этой.

    void Application_BeginRequest(Object sender, EventArgs e)
{
    string currentPath;
    currentPath = Request.Path; // /product/0001_100_00_KK00_F02.png/Tv-Sony-lcd-black-bravia-KDL-26V4500
    if (currentPath.IndexOf(".png") > -1)
    {
        string[] paths = currentPath.Split('/');
        currentPath = currentPath.Replace("/" + paths[paths.Length - 1], ""); // /product/0001_100_00_KK00_F02.png
        Context.RewritePath(currentPath);
    }
}

Это будет работать, но также будет переписывать все request.paths, которые содержат ".png" из-за "if (currentPath.IndexOf (". Png ")> -1)" Безопаснее включить еще несколько кондиционеров.

0 голосов
/ 02 января 2012

Будет ли URL работать так?

/ продукт / 0001_100_00_KK00_F02.png? Tv-Sony-ЖК-черно-BRAVIA-KDL-26V4500

Пока вы ставите знак вопроса после имени файла, ваше изображение будет отображаться очень хорошо. Как отмечает @Jon Edgerton, IIS не находит ваше изображение, и поэтому оно не отображается.

Если вы хотите полностью настраиваемый URL-адрес, вам придется переписать его. Вот статья об этом: http://learn.iis.net/page.aspx/517/url-rewriting-for-aspnet-web-forms/.

...