我正在经历一个非常奇怪的问题。
我在第一页上有一个下拉列表,所以我从下拉列表中选择一个值,然后单击一个按钮
点击后我移动到另一个页面,所以在该页面上我使用它并从第一页的下拉列表中获取所选值:
int hobbyid = Convert.ToInt32(formcollection["Hobby"]);
现在问题是新页面位于标签下。
所以当点击第一页上的按钮时,它会移动到这个标签,但是如果我去其他页面,然后通过点击它的tab来点击这个页面。现在formcollection方法不会给我任何价值。我应该如何解决这个问题?
我可以使用会话来解决这个问题吗?
但我不知道如何使用它。请帮助我
答案 0 :(得分:0)
如果你想保持导航的爱好,你必须把它保存在某个地方。一种方法是保持在查询字符串中。即:当您移动到第一个选项卡时,将hobbyid作为qyerystring的一部分传递,然后在那里读取并设置为该页面中所有相关链接(指向您想要业余爱好者的页面)的qyerystring部分。那么如果formcollection [“hobby”]为null,你应该从查询字符串中读取值。
另一种方法是使用会话。因此,每当使用从dropdwon中选择一个项目并提交时,将其设置在会话变量上并从那里访问它。
Session["selectedHobby"]="some value read from the form";
答案 1 :(得分: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>