by WebSurfer
2011年6月13日 22:58
ページングする際に &page=n(n はページ番号)というクエリ文字列がページャーのリンクの URL に追加
される場合があります。しかしながら、& のままでは W3C Markup Validation に通りません。HTML エンコー
ドして & にする必要があります。この問題には今まで気がつきませんでした。(汗)
この問題を解決するには、User controls/PostList.ascx.cs の InitPaging メソッドを以下のように修正しま
す。
private void InitPaging()
{
string path = Request.RawUrl;
if (!(Request.QueryString["year"] != null ||
Request.QueryString["date"] != null))
path = REMOVE_DEFAULT_ASPX.Replace(path, string.Empty);
if (path.Contains("?"))
{
if (path.Contains("page="))
{
int index = path.IndexOf("page=");
path = path.Substring(0, index);
}
else
{
path += "&";
}
}
else
{
path += "?";
}
int page = GetPageIndex();
string url = path + "page={0}";
// 下記の追加のみ
url = url.Replace("&", "&");
hlNext.HRef = string.Format(url, page);
hlPrev.HRef = string.Format(url, page + 2);
if (page == 0)
{
hlNext.Visible = false;
}
else
{
(Page as BlogBasePage).AddGenericLink(
"next",
"Next page",
hlNext.HRef);
Page.Title += " - Page " + (page + 1);
}
if (hlPrev.Visible)
(Page as BlogBasePage).AddGenericLink(
"prev",
"Previous page",
string.Format(url, page + 2));
}