实现AJAX主菜单的最佳方法是什么?

时间:2009-02-01 22:20:42

标签: jquery asp.net-mvc ajax

我正在使用ASP.NET MVC构建一个包含大量jQuery和AJAX内容的站点,我希望主菜单可以与AJAX一起使用,或多或少地使用其他站点。

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

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

我意识到第三个问题可以通过创建呈现每个PartialView的视图来解决,但是没有更好的方法吗?在将部分视图返回到客户端之前,将某些方法“包装”在站点主服务器中的部分视图或控制器中的某些内容?

3 个答案:

答案 0 :(得分:1)

我倾向于同意罗布(虽然我不会投票给你;))。没有充分理由,像Ajax这样的JavaScript技术不应该是您网站的核心。我建议在Google上搜索“渐进增强”和“不引人注目的javascript”等字词。

构建一个漂亮的RESTful站点,然后在可以在很大程度上增强用户体验的地方使用JavaScript和Ajax进行增强。

答案 1 :(得分:0)

对于#2:您可以在菜单的url:example示例中添加#hash:

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

然后在你身上加载:

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

对于#3 我不知道ASP。遗憾。

答案 2 :(得分:0)

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

在没有浏览器重新加载的情况下更改网址的唯一方法是在结尾添加#。例如:

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

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

希望它有所帮助...