【问题标题】:What is the best way to implement an AJAX main menu?实现 AJAX 主菜单的最佳方式是什么?
【发布时间】:2009-02-01 22:20:42
【问题描述】:

我正在使用带有大量 jQuery 和 AJAX 内容的 ASP.NET MVC 构建一个站点,并且我希望主菜单与站点的其余部分或多或少一样使用 AJAX。

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

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

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

【问题讨论】:

  • 对不起,你为什么要使用 Ajax 来加载主要内容?如果用户单击导航链接,那么他们可以合理地期望被带到具有新请求的不同页面。它可能和使用 Ajax 一样快,并且在每个浏览器中都一样。
  • 好吧,我希望我的网站有一个流畅的 Web 2.0 外观,因为我在主要区域(菜单、图像等)周围有很多静态内容,我不想重新加载所有内容,如果我可以避免它。附带说明一下,我认为没有理由仅仅因为该问题不是您想要解决的问题而对问题投反对票。

标签: jquery asp.net-mvc ajax


【解决方案1】:

我倾向于同意 Rob 的观点(尽管我不会投票给你;))。没有充分的理由,像 Ajax 这样的 JavaScript 技术不应该成为您网站的核心。我建议在 Google 上搜索“渐进式增强”和“不显眼的 javascript”等术语。

构建一个漂亮的 RESTful 网站,然后在可以显着增强用户体验的地方使用 JavaScript 和 Ajax 进行增强。

【讨论】:

    【解决方案2】:

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

    在不重新加载浏览器的情况下更改 URL 的唯一方法是在末尾添加 # 。示例:

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

    没有别的办法。您可以查看 Facebook 和 Google Mail/Reader 之类的网站以查看实现的示例。

    希望对你有帮助...

    【讨论】:

      【解决方案3】:

      对于#2:您可以在 url 的末尾添加一个#hash:在您的菜单中的示例:

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

      然后在你的身体上加载:

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

      #3我不知道 ASP。对不起。

      【讨论】:

      • 好吧,因为我使用的是 ASP.NET MVC,所以我所有的 url 看起来都像 example.com/Home/About 或 example.com/Products/List - 换句话说,他们实际上需要指向不同的位置。你知道有什么方法可以在不加载新页面的情况下更改地址栏的实际位置吗?
      • 有些库可以这样做并使用我上面描述的技术创建如下网址:example.com/#/Home/About。也许如果这足够了。如果最坏的情况变得最糟,您可以创建一个占据整个页面的巨型 Iframe,但使用我的技术将哈希添加到主 url。艾萨克
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 2021-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      相关资源
      最近更新 更多