Javascript 在ASP.NET MVC3中将多个视图组合在一起

Javascript 在ASP.NET MVC3中将多个视图组合在一起,javascript,jquery,asp.net-mvc-3,razor,Javascript,Jquery,Asp.net Mvc 3,Razor,我现在已经在ASP.NET MVC3中设置了一个站点,但是所有内容的布局都针对移动设备进行了优化 现在,我想将一些现有视图组合在一起,以利用桌面浏览器或平板电脑中的额外屏幕空间 我现在有两个视图,一个显示链接列表,另一个显示每个链接生成的一些内容;这两个视图都由单独的控制器处理。下面是列表视图(简化)。它使用一个布局页面,因此这是在布局中调用@RenderBody()时显示的内容(我的第二个视图也是这样工作的,使用相同的布局文件) 但是,我在ajax成功处理程序中得到的数据包含完整的html页面

我现在已经在ASP.NET MVC3中设置了一个站点,但是所有内容的布局都针对移动设备进行了优化

现在,我想将一些现有视图组合在一起,以利用桌面浏览器或平板电脑中的额外屏幕空间

我现在有两个视图,一个显示链接列表,另一个显示每个链接生成的一些内容;这两个视图都由单独的控制器处理。下面是列表视图(简化)。它使用一个布局页面,因此这是在布局中调用
@RenderBody()
时显示的内容(我的第二个视图也是这样工作的,使用相同的布局文件)

但是,我在ajax成功处理程序中得到的数据包含完整的html页面

<!DOCTYPE html> 
<html> 
    <head>...</head>
    <body>...</body>
</html>

...
...

…当我想要的只是版面的
@RenderBody()
调用中生成的内容时。我尝试将控制器方法更改为返回PartialView(“Index”),但它给出了相同的结果。有没有一种方法可以让我只返回视图的那一部分?或者是否有更干净、更“MVC”的方法来实现这一点?

最好的选择是从单独的控制器操作返回部分视图。因此,为了让它发挥作用,我会做一些改变:

  • 获取您想要共享的内容(无论您想要在桌面的div中显示什么),并将其放在部分视图中
  • 创建一个只返回此部分视图的控制器操作(使用该方法并传入部分视图名称),然后在桌面版本中从javascript调用它
  • 在移动版本的视图中,可以使用该方法将部分视图中的内容包括在移动页面中

  • 我仍然需要做一些测试,但这似乎有效。谢谢
    $(document).on("click", "#commandcenterlist a", function (e) {
        $.mobile.showPageLoadingMsg();        
        $.ajax({
            url: this.href,
            success: function (data) {
                $.mobile.hidePageLoadingMsg();
                $("#desktopContentPane").html(data);
            }
        });
        return false;
    });
    
    <!DOCTYPE html> 
    <html> 
        <head>...</head>
        <body>...</body>
    </html>