Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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
Asp.net mvc .NET MVC-列表和详细视图_Asp.net Mvc - Fatal编程技术网

Asp.net mvc .NET MVC-列表和详细视图

Asp.net mvc .NET MVC-列表和详细视图,asp.net-mvc,Asp.net Mvc,我认为这有一个简单的答案,但由于某种原因,我今天遇到了一个作家障碍。我有一个应用程序,人们可以像任何应用程序一样搜索:并生成列表视图。从该列表视图中,您可以查看详细信息,这将带您进入详细信息视图。没有JS,只是另一个页面。但是,我想做的是在details视图中有一个back/next按钮,这样您就可以解析结果集,而不必返回列表,然后选择下一条记录 关于实现这一点,我有两个想法。想法1在我的自定义类中有下一个/上一个记录字段。但是,这不起作用,因为搜索查询不一定会返回连续的结果,我每次都必须查询数

我认为这有一个简单的答案,但由于某种原因,我今天遇到了一个作家障碍。我有一个应用程序,人们可以像任何应用程序一样搜索:并生成列表视图。从该列表视图中,您可以查看详细信息,这将带您进入详细信息视图。没有JS,只是另一个页面。但是,我想做的是在details视图中有一个back/next按钮,这样您就可以解析结果集,而不必返回列表,然后选择下一条记录

关于实现这一点,我有两个想法。想法1在我的自定义类中有下一个/上一个记录字段。但是,这不起作用,因为搜索查询不一定会返回连续的结果,我每次都必须查询数据库才能获得下一个/上一个列表。Idea 2为与搜索结果相对应的每个detials视图提供一个ID列表或在视图状态下传递的一些自定义对象。在这一点上,我不确定与此方法相关的“开销”

SO社区有什么建议吗


谢谢

构造打开“详细信息”视图的链接,使其具有“下一个”和“上一个”参数,这些参数包含上一个/下一个元素的列表以及当前元素的id。如果您通过索引而不是使用foreach遍历列表模型数据,可能最容易做到这一点——这样,您在查找其ID时,只需引用相对于当前元素的上一个/下一个元素。确保正确处理第一个和最后一个元素

在控制器操作中,“下一个/上一个”参数应该可以为空-如果没有从列表中获取,则不会渲染“下一个/上一个”按钮。您可以发布详细信息视图操作,并在表单中而不是URL中添加额外的参数,以便用户仍然可以将URL添加到书签中。请注意,这也有它自己的问题,尽管关于浏览器的后退/前进按钮和刷新

<% for (int i = 0, len = Model.Count(); i < len; ++i)
   {
      Foo model = Model.ElementAt(i);
      string prev  = i == 0 ? null : string.Join( ",", Model.Take(i).Select( m => m.ID.ToString() ).ToArray() );
      string next = i == (len - 1) ? null : string.Join( ",", Model.Skip(i).Select( m => m.ID.ToString() ).ToArray() )
 %>
   <% using (Html.BeginForm("Details","Bar", new { id = model.ID } )) { %>
        <%= Html.AntiForgeryToken() %>
        <%= Html.Hidden( "Prev", prev ) %>
        <%= Html.Hidden( "Next", next ) %>
        <input type="submit" value="Details" />
   <% } %>
<% } %>

我可能还会使用一些jQuery将输入按钮更改为一个链接,该链接使用单击事件处理程序提交封闭表单,但这只是我对UI的偏好。

谢谢tvan,但这不是只为我从所选记录中购买一个移动吗?单击next(下一个)或prev(上一个)按钮进入下一条记录后,我将如何从新记录计算next(下一个)按钮URL?我没有想到这一点-而是将其作为ID列表提供。如果有机会,我会更新代码,但修改代码应该不难。“详细信息页面也必须做同样的事情。”汤米回答说,但是没有+1票支持帮助?或者你只是不知道你可以投赞成票并接受答案?我之所以这么问,是因为你似乎对这个网站比较陌生。是的,对不起,我访问的次数不够多,不知道所有的功能