将网站从iframe重写为AJAX

时间:2015-05-07 12:49:01

标签: asp.net ajax iframe

我刚刚完成了第一个网站(ASP.NET)的工作。我想要的只是顶部的一些简单的导航菜单和底部的内容。首先我开始使用MasterPages,但我不希望在页面之间浏览时刷新整个页面,而且使用MasterPages似乎无法实现。 所以我切换到iframe - 一切看起来不错,但我不能书签或访问子页面。

我愿意再次重写网页,但我不确定使用哪种技术。我应该试试AJAX asp.net吗?在我在网上发现的教程中,他们总是只更新几个字符串,从不整页包含图像,文本等。我​​是否必须将所有页面的html代码放入一个包含大量面板的大文件中,或者它是否可以保留分离的aspx文件?或者到目前为止我还忽略了其他一些方法吗? 我想要的只是一个带有菜单的网站,它不会一直重新加载并可以导航到子页面。为了更好地理解,我当前的页面是www.caucasus-trekking.com

谢谢你,Jozef

2 个答案:

答案 0 :(得分:0)

如果你真的想保留页眉/页脚,那么你可能想制作一个单页应用程序(SPA),就像AngularJS一样,但它需要重新编写几千行代码,因为你改变"哲学"。 SPA on Wikipedia

目前最简单的解决方案应该是仅刷新身体的AJAX调用,但对于复杂的网站,我没有推荐它。你必须编写一个_YourPage.cshtml,通过使用ajax函数加载你在jquery中调用的控制器,例如:

$.ajax({
                    url: "@Url.Action("Search", "Home")",
                    cache: false,
                    type: "GET",
                    dataType: "html",
                    traditional: true,
                    data: {
                        page: // Your page id found in the a href thanks to data-*?
                    },
                    success: function (result) {
                        // replace the body
                    }
                });

我们以前使用MasterPage,或单页应用程序

答案 1 :(得分:0)

通过我,最好的方法是切换到Asp.Net MVC,因为标准的Web表单不能提供您需要的灵活性,可能非常棘手。

以下是使用MVC执行此操作的方法:

  1. 制作页面的控制器和视图。
  2. 使用_Layout.cshtml标题,导航,...(而不是母版页)。
  3. 在导航链接上,放置以正常,标准方式导航到特定网页的正常href值。
  4. 到目前为止,这只是一个标准的常规网站。
  5. 现在,在导航链接上,附加使用Ajax和来自href的URL从服务器加载内容的点击处理程序。将此加载的内容放在内容div中。
  6. 在服务器上,在控制器内部操作中,为正常请求返回View,为ajax请求返回PartialView
  7. 此外,使用其中一些方法来修改浏览器URL。 Modify the URL without reloading the page
  8. 最后,您获得部分页面重新加载,访问者可以收藏 页面和您的内容对搜索引擎可见。双赢。