Javascript 带有History.js的支持拆分面板AJAX的ASP.NET MVC 5应用程序
我正在尝试使用ASP.NETMVC5创建一个Web应用程序,其中我将一个“主页”拆分为两个窗格 这两个窗格中的每一个都应该显示可能包含链接的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并替
部分视图
(有时是列表,有时是数据,几乎类似于主细节流模式)。这些链接进行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]
控制器中的不同操作
我建议采用什么方法来“构建”浏览器顶部栏上显示的[浏览器栏中显示的URL]
URL,并让我的应用程序理解该URL(以防用户保存/刷新/发送该URL)并提供带有相应面板的主页,考虑到其内容可能来自不同的控制器
我建议的方法。。。
就是始终使用HomeController
交付主页面,然后让其他控制器包含返回partialView的操作
HomeController将有一个“主”操作,该操作可以采用参数,详细说明制作左右窗格所需的控制器/操作/等的名称(可能缩短)。然后,“Main”操作将返回包含这些属性的ViewModel的MainView
,然后Razor将使用Html.RenderAction(…)
和接收到的参数呈现必要的部分
我的javascript应该跟踪每个窗格上显示的内容,并相应地更新url的参数。由于没有答案/注释,我建议的方法是始终使用HomeController
来交付主页(MainView
)然后让其他控制器
包含返回不同部分视图的操作
HomeController
有一个“Main”
操作
,可以获取制作左右窗格所需的控制器/操作/等的详细名称(可能缩短)参数。“Main”操作返回主视图
,其中包含这些属性的视图模型
,然后Razor使用Html.RenderAction(…)
和接收到的参数呈现必要的部分
Myjavascript
跟踪每个窗格上显示的内容,并相应地更新url的参数