Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有History.js的支持拆分面板AJAX的ASP.NET MVC 5应用程序_Javascript_Jquery_Html_Asp.net Mvc_History.js - Fatal编程技术网

Javascript 带有History.js的支持拆分面板AJAX的ASP.NET MVC 5应用程序

Javascript 带有History.js的支持拆分面板AJAX的ASP.NET MVC 5应用程序,javascript,jquery,html,asp.net-mvc,history.js,Javascript,Jquery,Html,Asp.net Mvc,History.js,我正在尝试使用ASP.NETMVC5创建一个Web应用程序,其中我将一个“主页”拆分为两个窗格 这两个窗格中的每一个都应该显示可能包含链接的部分视图(有时是列表,有时是数据,几乎类似于主细节流模式)。这些链接进行AJAX调用,从服务器获取部分视图,并替换其中一个窗格的内容(链接所在的窗格或相反的窗格)。这些部分视图可能表示不同的视图模型,并且来自不同的控制器 我可以通过使用自定义jQuery/Javascript来实现这一点。PartialView上的链接触发获取其他PartialView并替

我正在尝试使用ASP.NETMVC5创建一个Web应用程序,其中我将一个“主页”拆分为两个窗格

这两个窗格中的每一个都应该显示可能包含链接的
部分视图
(有时是列表,有时是数据,几乎类似于主细节流模式)。这些链接进行
AJAX
调用,从服务器获取部分视图,并替换其中一个窗格的内容(链接所在的窗格或相反的窗格)。这些部分视图可能表示不同的视图模型,并且来自不同的控制器

我可以通过使用自定义jQuery/Javascript来实现这一点。PartialView上的链接触发获取其他PartialView并替换窗格内容的函数。当我想允许用户使用浏览器的后退按钮时,我的问题就出现了

为了在HTML5和非HTML5浏览器中实现这一点,我已经将其添加到我的项目中,并配置了我的应用程序,以便它使用pushState()来获取数据和url,等等

History.pushState({ 
                    content: [THE_PARTIAL_VIEW], 
                    paneId: [THE_ID_OF_THE_PANE_TO_REPLACE], 
                    paneUrl : [THE_PATH_TO_GET_THE_PARTIAL_VIEW] 
                  }, 
                  title,
                  [THE_URL_TO_SHOW_IN_THE_BROWSER_BAR]);
鉴于:

  • 主页由“HomeController”提供,所有其他PartialView由其他控制器提供
  • 那些.cshtml文件存储在
    视图/CONTROLER_NAME
  • 我希望用户能够使用后退/前进按钮导航
  • 例如,我希望用户能够将
    添加书签或刷新[浏览器栏中显示的URL]
    ,并获得带有相应窗格的主页
我的主要问题是能够捕获页面的“状态”,由面板1和2中的信息表示,这些信息可能来自url中不同
控制器中的不同
操作

我建议采用什么方法来“构建”浏览器顶部栏上显示的
[浏览器栏中显示的URL]
URL,并让我的应用程序理解该URL(以防用户保存/刷新/发送该URL)并提供带有相应面板的主页,考虑到其内容可能来自不同的控制器

我建议的方法。。。 就是始终使用
HomeController
交付主页面,然后让其他控制器包含返回partialView的操作

HomeController将有一个“主”操作,该操作可以采用参数,详细说明制作左右窗格所需的控制器/操作/等的名称(可能缩短)。然后,“Main”操作将返回包含这些属性的ViewModel的Main
View
,然后Razor将使用
Html.RenderAction(…)
和接收到的参数呈现必要的部分


我的javascript应该跟踪每个窗格上显示的内容,并相应地更新url的参数。

由于没有答案/注释,我建议的方法是始终使用
HomeController
来交付主页(
MainView
)然后让其他
控制器
包含返回不同
部分视图的
操作

HomeController
有一个
“Main”
操作
,可以获取制作左右窗格所需的控制器/操作/等的详细名称(可能缩短)参数。“Main”操作返回主
视图
,其中包含这些属性的
视图模型
,然后Razor使用
Html.RenderAction(…)
和接收到的参数呈现必要的部分

My
javascript
跟踪每个窗格上显示的内容,并相应地更新url的参数