MVC替代iframe

时间:2012-04-26 15:13:46

标签: asp.net-mvc asp.net-mvc-3 iframe partial-views

我正在寻找使用IFRAME在使用MVC3的所有页面的包装页面中加载整页的替代方法。我需要包装页面进行集中登录和身份验证,并希望在包装器的一部分内动态加载其他页面,就像在WPF中加载模块一样。我以前使用过IFRAME来完成这个,但我想保持导航完好无损(即后退按钮将转到之前加载的“插件”页面而不是前一页的包装器)。我认为我可以通过部分视图完成此操作,但无法找到从完全不同的项目(或从已托管的站点)加载部分视图的方法。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您可以进行ajax调用以从外部站点获取内容并将它们放在父页面html中的所需位置。这可以对页面进行加载。

使用jquery,它将类似于:

$.ajax({
        url: 'http://www.externalsite.com',
        cache: false,
        dataType: "html",
        success: function (data) {
           $("#divInsideParentPage").html(data);
        }
    });

答案 1 :(得分:0)

在“布局/母案情景 - 基础知识”标题下查看this page

简而言之,您创建一个主模板并插入占位符以显示您的内容......

它的工作原理取决于你正在使用的视图引擎(Razor等......)

编辑:

WRT历史记录/返回按钮,您可以使用history.js来实现您想要的效果。请参阅广泛使用它的this site(它使用AJAX加载内容 - 初始加载后基页永远不会更改。)