偏偏覺得是個小網站,又放一個動態生成的話,實在太廢力了…
好加在後來有找到解決方法了~就在此分享並筆記一下
因為一個問題,而不同的解答
從而學到更多,大概也是我喜歡寫程式的因素…
當你要連的url是這種情形:
http://test/bookclass.aspx?type=1&id=25
sitemap如果能好解決的話
通當是這樣:(Web.sitemap)
<siteMapNode url="http://test/bookclass.aspx?type=1&id=25" title="百科全書" description="" />
喔…對了,要改成
<siteMapNode url="http://test/bookclass.aspx?type=1&id=25" title="百科全書" description="" />
我想網路應該可以找到很多這種提示
字元 | ||
' | ' | |
" | " | |
& | & | |
< | < | |
> | > | |
換行 | Chr(10),Chr(13) | |
Tab | Chr(9) | |
space |   | Chr(20) |
另外再補充一則連結→http://blog.csdn.net/foamflower/article/details/4678312
有興趣可以看一下…
通常這樣Web.sitemap大概就可以解決很多問題,但是:p
不幸的事總是常發生
http://test/bookclass.aspx?type=1&id=25→type=1是百科全書,而且id可能從1~100都是
http://test/bookclass.aspx?type=2&id=25→type=2是程式用書,而且id也是1~100都是
後來發現這篇→http://www.cnblogs.com/mxh691/archive/2011/05/27/2059933.html#commentform
解決了一切參數的問題>"<
照著他的參考,又改成我想要的,不用生成啥sitemap,雖然這也是一勞永逸…
將參考的code po在下面,有興趣可以玩玩,並祝有個愉快的一天
Web.sitemap
//之後的id再補
<siteMapNode url="~/test/bookclass.aspx?type=1" title="百科全書" description="" />
<siteMapNode url="~/test/bookclass.aspx?type=2" title="程式用書" description="" />
Default.master.cs
using System.Web;
public partial class Default_master : System.Web.UI.MasterPage
{
private string sid; //書的id
private string stype; //書的type
protected void Page_Load(object sender, EventArgs e)
{
//先將參數抓出來
sid= Request.QueryString.Get("id");
stype= Request.QueryString.Get("type");
SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(SiteMap_SiteMapResolve);
}
SiteMapNode SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e)
{
//只需一個執行一個請求
SiteMap.SiteMapResolve -= new SiteMapResolveEventHandler(SiteMap_SiteMapResolve);
//需回傳的Node
SiteMapNode currentNode = null;
//如果已有找到Node,就設定為新的clone就好了
if (SiteMap.CurrentNode != null)
{
currentNode = SiteMap.CurrentNode.Clone(true);
}
else
{
//如果為空,判定抓取參數
if (sid!= "" && stype != "")
{
//將sitempa的點抓出來
SiteMapNode smn = SiteMap.Provider.FindSiteMapNode(@"~/test/bookclass.aspx?type=" + type);
//重設定一個新的連結
string newurl = smn.Url + @"&id=" + topicid;
//重做一個新的連結點(smn.Url 是唯讀),基本都跟smn一樣,只是url變成新的而已
SiteMapNode newnode = new SiteMapNode(this.SiteMapPath1.Provider, smn.Key, newurl, smn.Title, smn.Description);
newnode.ParentNode = smn.ParentNode;
currentNode = newnode;
}
}
return currentNode;
}
}
補充:如果是放在website同一層資料夾的話
用下可面的寫法,可能會讀不到
<siteMapNode url="bookclass.aspx?type=1" title="百科全書" description="" />
建議加入
<siteMapNode url="~/bookclass.aspx?type=1" title="百科全書" description="" />
good luck~=V=
另外偷補一個→http://blog.faq-book.com/?p=1940
用string.Format來將Eval的資料繫結帶到網址後面的對應位置
俺的作法(紅字代表連結的資料庫的欄位名稱)
<asp:HyperLinkField DataNavigateUrlFields="type,id"
DataNavigateUrlFormatString="bookclas.aspx?type={0}&id={1}"
ItemStyle-HorizontalAlign ="Left" ItemStyle-width ="200"
DataTextField="name">
接著補(總覺得應該開新版了)→http://download.csdn.net/detail/dyx2525775/2635106
防圖片被盜連
沒有留言:
張貼留言