0

我遇到了一个非常奇怪的问题。

我在第一页上有一个下拉列表,所以我从下拉列表中选择一个值并单击一个按钮。
单击时,我移至另一个页面,因此在该页面上我使用它并从第一页的下拉列表中获取所选值:

 int hobbyid = Convert.ToInt32(formcollection["Hobby"]);

现在的问题是新页面位于标签下。

因此,单击第一页上的按钮时,它会移动到此选项卡,但是如果我转到其他页面,然后通过单击其选项卡返回此页面。现在 formcollection 方法不会给我带来任何价值。我应该如何解决这个问题?
我可以使用会话解决这个问题吗?
但我不知道如何使用它。请帮助我

4

2 回答 2

0

如果您想在导航中保留爱好,则必须将其保留在某个地方。一种方法是保留查询字符串。即:当您移动到第一个选项卡时,将 hobbyid 作为 qyerystring 的一部分传递,然后在该页面中读取它并将其设置为所有相关链接(指向您想要 hobbyid 的页面)的 qyerystring 部分。 . 如果 formcollection["hobby"] 为空,那么您应该从查询字符串中读取值。

另一种方法是使用会话。因此,每当使用从 dropdwon 中选择一个项目并提交时,将其设置在会话变量上并从那里访问它。

Session["selectedHobby"]="some value read from the form"; 
于 2012-05-24T02:54:51.493 回答
0

您可以使用 ASP.net TempData。

TempData 仅可用于用户的会话,并且仅在我们读取它之前一直存在,然后在请求结束时将其清除。当数据需要在两个请求或重定向场景之间持久存在时,可以使用 TempData。

店铺:

[HttpPost]
  public ActionResult MyAction(UserInfo user) {


   TempData["Hobby"] = User.Hobby;//In USerInfo view model Hobby property is of type string or int depends on what you need)

 return RedirectToAction("Index");

}

在视图中检索它:

<div>
 @if (TempData["Hobby"] != null) {

 <p>Hobby: @TempData["Hobby"]</p>

 }
</div>
于 2012-05-24T04:48:08.663 回答