有没有办法处理silverlight深层链接没有在网址中显示“#”?

时间:2010-01-04 23:44:25

标签: silverlight deep-linking

我希望我的网站有两个独立的界面,一个是silverlight,一个是普通的html,适用于没有Silverlight的人,也适用于搜索引擎。它们具有完全相同的内容,Silverlight只会是更丰富的体验。

如果有人使用Silverlight将URL复制到某个页面,则其中会有一个“#”(app#page1)。如果他们想要在他们的博客或其他东西上链接到该页面,那么它将包含#,并且搜索引擎可能不会将其视为app#page2的单独页面。

有没有办法让Silverlight内的导航用'/'而不是'#'更新URL,而不实际加载单独的页面?这样,地址栏中的网址就像普通网站的网址('app / page1','app / page2')。

2 个答案:

答案 0 :(得分:5)

  

有没有办法让Silverlight内的导航用'/'而不是'#'更新URL,而不实际加载单独的页面?这样,地址栏中的网址就像普通网站的网址('app / page1','app / page2')。

不幸的是,没有。 Silverlight导航网址使用#的原因是您可以移动到锚点位置,在 页面中移动。如果您使用带有“/”分隔符的完整网址,则会导致浏览器导航到新页面,这将重新加载您的Silverlight应用程序。这基本上会卸载您的Silverlight应用程序,并使用新URL加载一个新的。

答案 1 :(得分:1)

他们使用#符号的原因是因为浏览器会将其解释为移动到页面中的某个位置,否则会重新加载页面。

就搜索引擎的影响而言,我不确定。也许有更多SEO经验的人可以参与其中。

但是我确信你可以得到你正在寻找的行为,你可能会采取一些棘手的行动。另一种将信息传递给Silverlight客户端运行时的方法是使用查询字符串参数。您可以使用System.Windows.Browser.HtmlPage.Document.QueryString集合访问查询字符串参数,然后可以根据该参数加载包含所需内容的页面或用户控件。

使用'/'模仿文件夹结构。我知道有很多方法可以使用自定义Web服务器设置/ HTTPModules来完成此操作。我假设你正在使用IIS / ASP.Net,我会从Guthrie看看这个:

http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

采取一些hackery,但如果你真的这么做,我相信你可以。如果您在会话期间尝试使用相同的逻辑,您还将面对上述海报提到的内容。这可能适用于您正在寻找的深层链接方面。