2009-02-01 60 views
1

我正在构建一个使用ASP.NET MVC的站点,这里有大量的jQuery和AJAX的东西,我想让主菜单和AJAX一起工作,或多或少地与网站的其他部分一起工作。实现AJAX主菜单的最佳方式是什么?

在理想的情况下,我想我的主菜单 1)加载的主要内容与AJAX如果用户已启用JavaScript的 2)更改地址栏中的网址(以使链接的复制粘贴) 3)只在一个地方使用我的代码,这意味着我不想在.aspx视图和.ascx PartialView中使用相同的标记。

1)我没有问题。但是,我不知道如何在没有重新加载页面的情况下完成编号2)。有任何想法吗?

我意识到第三个问题可能可以通过创建一个呈现每个PartialView的视图来解决,但是没有更好的方法吗?在返回给客户端之前,可以通过一些方法在站点Master或Controller中“包装”PartialView?

+0

对不起,你为什么要打扰使用Ajax来加载主要内容?如果用户点击导航链接,那么他们可以合理地期望带着新的请求进入不同的页面。它可能与使用Ajax放屁一样快,并且它在每个浏览器中都是一样的。 – Rob 2009-02-01 22:24:39

+0

嗯,我想要一个流畅的Web 2.0看看我的网站,因为我在主区域(菜单,图像等)有很多静态内容,如果我能避免它,我不想重新加载所有内容。 作为一个便笺,我认为没有理由投票的问题,因为问题不是你想要解决的问题。 – 2009-02-01 22:28:07

回答

0

尽管我同意其他一些关于不通过AJAX加载内容的评论,但列表中的#2是一个常见的问题,在处理AJAX时经常出现问题,值得回答。

只有更改网址而不浏览器重新加载的方法是在最后加上#。例如:

http://www.yoursite.com/Content/About/#some-identifier 

没有其他办法。您可以查看Facebook和Google Mail/Reader等网站,查看实施的示例。

希望它有帮助...

0

#2:在你的菜单例如:在负载

<a href="#helppage" onclick="opento('helppage')">Help Page</a> 

然后在你的身体:您可以将#hash添加到URL的末尾

if(document.location.hash) { opento(document.location.hash); } 

For#3我不知道ASP。抱歉。

1

我倾向于同意罗布(虽然我不会投票给你;))。没有很好的理由,Ajax等JavaScript技术不应该成为您网站的核心。我建议在Google上搜索“渐进式增强”和“不显眼的JavaScript”等术语。

构建一个很好的RESTful站点,然后在JavaScript和Ajax中增强其在很大程度上增强用户体验的地方。

相关问题