首先,如果已经提出这个问题,我道歉,但我无法找到解决问题的方法。 我正在一个ASP.NET 4.0 Wepforms网站上工作,管理员将上传一张图片,它将被视为一个帖子,如图片博客。访问者可以使用fb评论对每张图片进行评论,并且可以喜欢它。目前iam使用每个帖子(图片)的查询字符串。但现在我想把每个网址作为一个热门搜索引擎优化。所以基本上我有两件事需要处理:
为管理员上传的每张图片制作唯一网址,网址应为其标题,例如“ www.example.com/posts/mexican-bulldog ”与blogengine或nopCommerce相同。目前iam在Global.asax中使用以下代码:
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routeCollection)
{
routeCollection.MapPageRoute("RouteForCustomer", "Customer/{Id}", "~/Customer.aspx");
routeCollection.MapPageRoute("RouteForHome", "home", "~/Default.aspx");
routeCollection.MapPageRoute("RouteForTroll", "post", "~/post.aspx");
}
上面的代码没有解决我的问题,我必须静态分配网址。
想要在帖子之间导航,即下一个和之前的
提前完成!
答案 0 :(得分:1)
请按照您的要求查看我刚刚实施的简单方法。可能有更多方法可以做到这一点。
我创建了一个类:Images
public class Images
{
public string CurrentImage { get; set; }
public string NextImage { get; set; }
public string PreviousImage { get; set; }
public string CurrentImagePhysicalName { get; set; }
public Images(string currentImagePhysicalName, string Current, string Next, string Previous)
{
this.CurrentImagePhysicalName = currentImagePhysicalName;
this.CurrentImage = Current;
this.NextImage = Next;
this.PreviousImage = Previous;
}
}
注册路线并在应用程序启动时初始化图像集:
public class Global : HttpApplication
{
public static List<Images> col = new List<Images>();
private void GetImages()
{
// Build this collection as per your requirement. This is just a sample.
// Logic is to store current, next, previous image details for current displaying image/page.
// Hope while storing image each will have unique name before saving and will have all details in db like path, display name, etc.
col.Add(new Images("orderedList0.png", "orderedList0", "orderedList1", ""));
col.Add(new Images("orderedList1.png", "orderedList1", "orderedList2", "orderedList0"));
col.Add(new Images("orderedList2.png", "orderedList2", "orderedList3", "orderedList1"));
col.Add(new Images("orderedList3.png", "orderedList3", "orderedList4", "orderedList2"));
col.Add(new Images("orderedList4.png", "orderedList4", "", "orderedList3"));
}
void Application_Start(object sender, EventArgs e)
{
GetImages();
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routeCollection)
{
routeCollection.MapPageRoute("RouteForImage", "Posts/{Name}", "~/Posts.aspx");
}
}
Posts.aspx
protected void Page_PreRender(object sender, EventArgs e)
{
string currentImage = RouteData.Values["Name"].ToString();
if (!String.IsNullOrEmpty(currentImage))
{
Images image = Global.col.Find(x => x.CurrentImage == currentImage);
// Get Current Image URL where actually it is stored using from image variable and render / set image path where you want to using image.CurrentImagePhysicalName
// Set Next - Previous Image urls
if (!String.IsNullOrEmpty(image.NextImage))
{
hyperlink_next.Visible = true;
hyperlink_next.Text = image.NextImage;
hyperlink_next.NavigateUrl = GetRouteUrl("RouteForImage", new { Name = image.NextImage });
}
else
hyperlink_next.Visible = false;
if (!String.IsNullOrEmpty(image.PreviousImage))
{
hyperlink_previous.Visible = true;
hyperlink_previous.Text = image.PreviousImage;
hyperlink_previous.NavigateUrl = GetRouteUrl("RouteForImage", new { Name = image.PreviousImage });
}
else
hyperlink_previous.Visible = false;
}
}
这只是一个示例演示。这里的主要想法是处理RouteData.Values["Name"].ToString()
来处理动态网址。
希望这对你有用。