0

私は非常に奇妙な問題を抱えています。

最初のページにドロップダウンがあるので、ドロップダウンから値を選択してボタンをクリックします。
クリックすると別のページに移動するので、そのページでこれを使用し、最初のページのドロップダウンから選択した値を取得します。

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

問題は、新しいページがタブの下に表示されることです。

そのため、最初のページのボタンをクリックするとこのタブに移動しますが、他のページに移動してから、そのタブをクリックしてこのページに戻ると、formcollection メソッドは値を生成しません。これを解決するにはどうすればよいですか?
セッションを使用してこれを解決できますか?
でも使い方がわからないので教えてください

4

2 に答える 2

0

ASP.net TempData を使用できます。

TempData はユーザーのセッションでのみ使用でき、読み取りが完了するまで保持され、要求の最後にクリアされます。2 つのリクエスト間またはリダイレクト シナリオ間でデータを保持する必要がある場合は、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 に答える
0

ナビはともかく趣味を続けたいなら、どこかに置いておかなければなりません。1 つの方法は、クエリ文字列を保持することです。つまり、最初のタブに移動するときに、hobbyid を qyerystring の一部として渡し、そこでそれを読み取り、そのページ内のすべての関連リンク (hobbyid が必要なページを指す) の qyerystring 部分として設定します。 . 次に、formcollection["hobby"] が null の場合は、クエリ文字列から値を読み取る必要があります。

別の方法は、セッションを使用することです。したがって、使用がドロップダウンからアイテムを選択して送信するたびに、セッション変数に設定し、そこからアクセスします。

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