繁体   English   中英

将数据传递到其他控制器/模型

[英]Passing data to a different controller/model

一般来说,我对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按钮在第二控制器项目进行导航,但在范围内建立的第一个控制器? 我怎样才能做到这一点?

谢谢

遵循任何最佳做法的第一种方法是将搜索结果(Controller1)保存在Session变量内。

Session["CurrentResult"] = YourViewModelInController1 ; 

然后在控制器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 Details上的上一个和下一个。 独立于先前

ActionResult Details(int id) 
{
   // Do a real search to find the next and the previous
}

考虑到您有一个如何传递值并在控制器中工作的想法,我可以为您提供如下建议:

您可以先在给定日期范围内将项目加载到列表中。 将该列表传递给第二个控制器,然后使用计数器单击上一个和下一个遍历该列表。

希望这会有所帮助,谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM