将内容加载到jquery模式插件:iFrame或Ajax?

时间:2009-11-23 10:06:21

标签: jquery asp.net-mvc iframe

我正在使用ASP.NET MVC 1.0为客户开发一个网站。有一个“个人资料的页面”,其中有许多链接与该个人资料相关联。例如,“请求联系”,“查看我们的指示”,“添加为您的朋友”等。

我想使用众多jquery模式脚本之一来显示这些链接,而不是将它们作为普通页面/链接加载,因为链接是一些小功能,不值得为每个链接创建特定页面。

所以这就是为什么我想使用模态插件将这些小功能的内容加载到配置文件的页面。

好的,问题是:我该怎么做?我可以使用iFrame加载内容或通过Ajax加载内容。

如果我使用iFrame,我需要有一个包含所有页面结构(html,heade,body等)的视图,但是如果我有一个Ajax请求,我只需要一个带有我的表单并加载到另一个div,或谷歌地图,或其他..

我应该使用iFrame还是Ajax?哪种方法最好?

由于

3 个答案:

答案 0 :(得分:0)

我在这里假设您正在使用Thickbox

我更喜欢有一个专门针对每个页面的视图,但我不使用iframe。无论哪种方式,您都需要在表示层上做一些工作。

我会从一个专门为AJAX请求创建的单独视图中获得部分返回。

答案 1 :(得分:0)

我正在看看FancyBox http://fancybox.net/home,看起来很可爱。我想我会做这样的事情:

我将使用Ajax.RenderPartial加载内容并填充空DIV。如果JS被禁用,我将链接到普通视图,然后它遵循正常过程。

还有其他不错的提示吗?

答案 2 :(得分:0)

  

我将使用Ajax.RenderPartial加载   内容和填补空DIV。   如果JS被禁用,我将链接到   正常查看,然后它遵循   正常的过程。

我认为这是Go的方式,使用RenderPartial对于AJAX提供的内容来说是优雅的,就像这种情况一样。由于邪恶的优先权,IFrame应该被避免。 在这种情况下变得方便的另一件事是你可以在控制器中处理这两种情况的方式(JS active / JS not active):

public ActionResult Action()
{
    if (Request.IsAjaxRequest())
    {
        //This one just have the explicit content
        return View("PartialView");
    }
    else 
    {
        //This one is a view that reference the partial View
        return View("CompleteView");
    }
}