Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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 MVC3::从详细信息视图导航表,而不是单击表中的详细信息链接_Javascript_Jquery_Asp.net Mvc_Json - Fatal编程技术网

Javascript MVC3::从详细信息视图导航表,而不是单击表中的详细信息链接

Javascript MVC3::从详细信息视图导航表,而不是单击表中的详细信息链接,javascript,jquery,asp.net-mvc,json,Javascript,Jquery,Asp.net Mvc,Json,我有一个索引视图,显示表中的项目列表。 每个项目都有一个显示其详细信息的链接(另一个通过Ajax加载的partialview,取代了索引视图) 单击详细信息链接后,用户现在希望查看“下一项”或“上一项”的详细信息。我们目前有一个反向链接,可以再次获取索引视图。。。用户可以点击任何项目。。。但她想要的是更实用 由于项目列表可能已被过滤,我认为实现这一点的唯一方法是通过jQuery或纯JS 我在考虑在某个隐藏字段中存储所有物品的ID。。。不存储在索引视图中(一旦访问详细信息,它就会消失),以便能够从

我有一个索引视图,显示表中的项目列表。 每个项目都有一个显示其详细信息的链接(另一个通过Ajax加载的partialview,取代了索引视图)

单击详细信息链接后,用户现在希望查看“下一项”或“上一项”的详细信息。我们目前有一个反向链接,可以再次获取索引视图。。。用户可以点击任何项目。。。但她想要的是更实用

由于项目列表可能已被过滤,我认为实现这一点的唯一方法是通过jQuery或纯JS

我在考虑在某个隐藏字段中存储所有物品的ID。。。不存储在索引视图中(一旦访问详细信息,它就会消失),以便能够从详细信息中访问它并创建下一个链接。但是它感觉很脏。。。仅仅列出ID是不够的,因为我应该跟踪哪个是当前ID,以便查看哪个是下一个和上一个项目。所以也许JSON可以做到这一点


在客户端存储列表的任何建议或其他方法?列表可能包含10到200个项目,一旦我再次筛选索引视图或通过其他事件,这些项目将被刷新。

好的,您可以显示详细信息的覆盖,而不是替换索引视图,在这种情况下,当用户单击“上一步/下一步”时,您会告诉索引视图层:“听着,我正在显示x,但是用户希望看到x+1,所以请用x+1替换我”

我可以看到的几种方法

  • 正如TheZuck所说,与其导航到详细信息页面,不如使用内容为详细信息页面的对话框或模式窗口。这样,当用户希望导航时,可以使用JavaScript从索引页访问值。我不太喜欢这个想法,因为它将您的导航逻辑与可能更改的渲染视图内容联系起来

  • 您可以从索引页面保留所需的ID,并将其传递到详细信息页面。这样做的结果是,对于您来说,只需修改相对较小的代码。另一方面,您可能会在每个导航请求中发布和检索这些ID

  • 你可以像#2那样做,但是增加了从细节内容本身分离导航控件的功能。如果将细节推送到局部视图中,现在可以使用AJAX助手连接导航控件。单击“前进”将通过发布帖子或进入控制器中的
    ActionResult
    ,将返回绑定到该id数据的部分视图,从而进入本地列表中的下一个id。我最喜欢这种方法,因为它不需要在每个细节导航中往返id,也不需要大量自定义javascript从呈现的页面访问ID。它使您有机会使用加载面板,以防检索数据需要一些时间

  • 旁白:如果您真的不喜欢将ID存储在隐藏的输入字段或javascript变量或列表中,您可以始终使用
    会话
    ,但如果您处于负载平衡环境中,没有粘性会话,请小心。这样,您就可以在服务器端访问当前筛选的结果。您的导航请求只会发送当前ID和所需的导航方向。在您的控制器中,只需拉动会话,查找ID并向前或向后移动您的指针(小心环绕,否则请确保您有办法不渲染会导致环绕的导航按钮)

    在这些选择中,我喜欢#3最佳用户体验,尤其是如果细节太大,无法像选项#1那样在一个小模式或对话框中很好地呈现时。它也可能是响应最快的,并且假设您应用了旁白,您可以访问列表的POCO表示,而不是在JavaScript中序列化和反序列化。如果细节页面太小,它会很容易融入对话框或模态窗口,我会考虑1。它可以像选项#1一样具有响应性,并且您仍然可以使用aside来避免在JavaScript中操纵ID

    我之所以不考虑选项3的优先级,唯一的原因是我们的用户体验人员经常拒绝客户对显示数据的“弹出窗口”的请求。她讨厌他们。我还没有弄清楚这是个人的决定,还是因为用户体验的最佳实践告诉了我这个决定,但这是我从未擅长过的事情,所以我没有兴趣去发现