0

ASP.net MVC 2.0 でサイトを開発しています。戻りのない単純なウィザードのように動作する一連のページがあります。データはページ間で共有する必要があります。ウィザードの次のページへのリダイレクトを、現在のページからのみ許可したいと考えています。現在のページのビュー モデルは、いくつかのロジックを実装するために使用される次のページに渡される必要があります。どのユーザーも、ブラウザーに直接 URL を入力して中間ページの 1 つにアクセスすることはできません。

指定されたキーで TempData を使用して、現在のページのモデル ビューを保存し、それを次のページに渡し、ページをレンダリングするために NULL かどうかを確認しようとしました。TempData のモデル ビューの値が NULL の場合、ユーザーが前のページからではなく、このページにリダイレクトしたことを意味します。ただし、ユーザーがウィザードの次のページにリダイレクトして、そこからサイトの別の場所 (たとえば、FAQ ページ) に移動できる場合があります。この後、ユーザーは残っているウィザード ページの直接リンクを入力できます。このページは表示されますが、論理的にはエラー ページにリダイレクトされる必要があります。

質問: ウィザードの特定のページに、前のページからのみリダイレクトするようにするにはどうすればよいですか?

4

3 に答える 3

0

よくわかりません。参照URLを制限したいと思いますか?もしそうなら、あなたはすることができます:

// Action code

if(Request.UrlReferrer != "Valid url")
{
  return View("Error");
}
else
{
  // render the next page of your wizard
}

必要なのは、各ステージで有効な URL リファラーを特定するロジックだけです。

Session を使用してデータを保存することを検討してください。

于 2012-09-03T19:14:13.200 に答える
0

ページの値をセッション変数に保存すると思います。各ページのコントローラーで、セッション変数をチェックして、前のステップにアクセスしたことを確認します。そうでない場合は、RedirectToAction を前のステップに戻します。

各ステップの最後で、検証が成功した後、完了したことを示すようにセッション変数を設定してから、次のステップにリダイレクトします。

セッションを使用してページ間でデータを共有することもできますが、一部の開発者がこれにうんざりしていることは承知しています...しかし、その理由はよくわかりません...私はセッションが大好きです。

于 2012-09-03T19:45:07.750 に答える
0

アクション メソッドを HttpPost に制限できます。

[HttpPost]
public ActionResult SecondPageAction(SomeType dataFromFirstPage)
{
     ....
}
于 2012-09-03T21:49:52.000 に答える