我对MVC很新,所以这听起来很愚蠢。但是,在以下情况中,我还没有完全了解如何连接数据:
我正在创建一个基本上有两个表的项目
表1
pid | pname | etc
表2
id | pid | etc
现在,我已经成功实现了一个控制器,我使用"日期范围"填充了table 1
中数据的列表。作为参数。
网址1
/table1object?search=Search&endDate=2015-02-20&fromDate=2015-02-20
如显示的表格所示,此view
中的每一行都与table 2
中的某一行相关联。所以,为此,我生成一个链接,它基本上通过循环当前model
向我发送第二个控制器的详细信息。
@Html.ActionLink("Details", "Details/" + @result.pId, "table2Object", null)
现在,我的控制器号码2(详细信息)仅接受id
显示Table 2
的特定信息。
网址2
/table2object/Details/96
问题
由于我只传递此id
来访问第二个控制器,因此我一次只能看到一个项目。如果我想添加previous
和next
按钮来浏览第二个控制器中的项目,但是在第一个控制器中建立的范围内,该怎么办?我怎么能这样做?
谢谢
答案 0 :(得分:1)
没有尊重任何最佳实践的第一种方法是将搜索结果(Controller1)保存在Session变量中。
Session["CurrentResult"] = YourViewModelInController1 ;
然后在Controller 2中
ActionResult Details(int id)
{
var prevViewModel = Session["CurrentResult"] ;
// Do what you want to find the prev and the next from prevViewModel
}
当然,如果您在不显示table1的情况下访问DetailController,则无法获得下一个和上一个。 而且,会有很多副作用。例如:当用户一次进行2次搜索时,..
第二个良好且正确的方法是重新执行搜索以查找Controller 2详细信息上的上一个和下一个。独立于之前的
ActionResult Details(int id)
{
// Do a real search to find the next and the previous
}
答案 1 :(得分:0)
考虑到你知道如何传递值并在控制器中工作,我可以给你一个建议如下:
您可以先在指定日期范围内的商品中加载商品。将该列表传递给第二个控制器然后通过单击prev并使用计数器来遍历该列表。
希望这有帮助, 感谢