将数据传递到不同的控制器/模型

时间:2015-02-20 18:36:18

标签: c# asp.net-mvc-5

我对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来访问第二个控制器,因此我一次只能看到一个项目。如果我想添加previousnext按钮来浏览第二个控制器中的项目,但是在第一个控制器中建立的范围内,该怎么办?我怎么能这样做?

谢谢

2 个答案:

答案 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并使用计数器来遍历该列表。

希望这有帮助, 感谢