3

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

如果使用 Silverlight 的人将 URL 复制到某个页面,它将在其中包含一个“#”(app#page1)。如果他们随后想要链接到他们博客或其他内容上的该页面,它将在其中包含 #,并且搜索引擎可能不会将其视为与 app#page2 分开的页面。

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

4

2 回答 2

5

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

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

于 2010-01-05T00:02:59.517 回答
1

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

至于搜索引擎的影响,我不确定这两种方式。也许对 SEO 更有经验的人可以加入进来。

但是我相信你可以得到你正在寻找的行为,只是可能需要一些技巧。将信息传递给 Silverlight 客户端运行时的另一种方法是使用查询字符串参数。您可以使用 System.Windows.Browser.HtmlPage.Document.QueryString 集合访问查询字符串参数,然后可以根据该参数使用所需内容加载 Page 或 User 控件。

至于使用“/”来模仿文件夹结构。我知道有一些方法可以使用自定义 Web 服务器设置/HTTPModules 来做到这一点。我假设您使用的是 IIS/ASP.Net,我会从 Guthrie 那里调查一下:

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

需要一些hackery,但如果你真的准备这样做,我相信你可以。如果您尝试在会话期间使用相同的逻辑,您还将面临上述海报提到的事情。这可能仅适用于您正在寻找的深层链接方面。

于 2010-01-05T00:08:46.177 回答