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

时间:2013-09-12 12:28:41

标签: javascript jquery asp.net-mvc json

我有一个索引视图,显示表格中的项目列表。 每个项目都有一个链接来显示其详细信息(通过Ajax加载另一个部分视图,替换索引视图)。

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

由于可以过滤项目列表,我认为实现这一目标的唯一方法是通过jQuery或普通JS。

我正在考虑使用一些隐藏字段来存储所有项目的ID ...不存储在索引视图中(一旦访问详细信息就会消失),以便能够从详细信息中访问它并创建Back Next链接。但它感觉很脏......并且没有提供仅仅ID的列表,因为我应该跟踪哪个是当前的ID以便查看哪个是下一个和上一个项目。所以...可能是JSON可以做到的。

在客户端存储列表的任何建议或其他方式?列表可能有10到200个项目,一旦我再次过滤索引视图或其他事件,将刷新。

2 个答案:

答案 0 :(得分:1)

好吧,你可以显示细节的叠加而不是替换索引视图,在这种情况下当用户点击上一个/下一个时,你会告诉索引视图层:“听,我正在显示x,但是用户希望看到x + 1,所以请用x + 1“

替换我

答案 1 :(得分:1)

我能看到的情侣方法。

  1. 像TheZuck所说,不是导航到详细信息页面,而是使用对话框或模态窗口,其内容是详细信息页面。有了这个,您可以使用JavaScript在用户希望导航时访问“索引”页面中的值。我不是这个想法的粉丝,因为它将你的导航逻辑与可能改变的渲染视图内容联系起来。

  2. 您可以从索引页面保留所需的ID,并将它们传递到详细信息页面。这样做的结果是,为你改变它是一个相对较小的代码。在缺点方面,您将使用每个导航请求发布和检索这些ID。

  3. 你可以像#2那样做,但增加了从细节内容本身分割你的导航控件。如果将细节推送到局部视图,现在可以使用AJAX帮助程序连接导航控件。单击向前将通过向控制器中的ActionResult发出POST或GET,将您带到本地列表中的下一个ID,该{@ 1}}将返回绑定到该ID的数据的部分视图。我最喜欢这种方法,因为它不会通过每个细节导航往返于ID,并且不需要大量自定义javascript来从渲染页面访问ID。它使您有机会使用加载面板,以便检索数据需要一些时间来检索。

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

    在选择中,我认为#3是最佳UX的最佳选择,特别是如果细节太大而无法在选项#1中的小型Modal或Dialog中很好地呈现。它也可以是响应最快的,假设您应用了旁边,您可以访问列表的POCO表示,而不是在JavaScript中序列化和反序列化。如果“详细信息”页面非常小,以至于它很容易适合对话框或模态窗口,我会考虑#1。它可以像选项#1一样响应,你仍然可以使用它来避免在JavaScript中操纵id。

    我优先考虑选项#3的唯一原因是因为我们的UX用户经常拒绝客户端对显示数据的“弹出窗口”的请求。她讨厌他们。我不知道这是个人的还是因为用户体验最佳实践告知了这个决定,但这是我从未擅长的事情所以我没有兴趣找到它!