我在转发器中有一个图像控件。我想排除/忽略imageurl属性中的参数,因为路径(源图像)名称中没有此参数,但我仍想在url中显示该参数。我无法重命名所有图像,因为有很多。希望它有意义。
这是一个例子。
是SEO。原始路径
我想在imageurl中显示什么
OR
<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
时,找不到图像(当然)。
那么如何在imageurl中添加一个额外的参数,但让图像控件忽略它并仍然找到图像路径?
有没有人对如何解决这个问题有任何想法
答案 0 :(得分:0)
像这样的网址会起作用吗?
/product/0001_100_00_KK00_F02.png?Tv-Sony-lcd-black-bravia-KDL-26V4500
只要在文件名后添加问号,您的图像就会显示得很好。正如@Jon Edgerton指出的那样,IIS没有找到你的图像,这就是它不显示的原因。
如果您想要一个完全自定义的URL,那么您将不得不进行一些URL重写。这是一篇关于它的文章:http://learn.iis.net/page.aspx/517/url-rewriting-for-aspnet-web-forms/。
答案 1 :(得分:0)
您可以通过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);
}
}
这会起作用,但也会重写所有包含“.png”的request.paths,因为“if(currentPath.IndexOf(”。png“)&gt; -1)” 包括更多的调理更安全。