32

こんにちは、あるビューから別のビューにリダイレクトしようとしていますが、Visual Studio で赤い波線が表示されます。ビュー内から別のビューにリダイレクトするにはどうすればよいですか。これは私が試したことですが、機能しません:

@Response.Redirect("~/Account/LogIn?returnUrl=Products");

現在のビューから別のビューにリダイレクトするにはどうすればよいですか?

4

3 に答える 3

42

これは、ステートメントが出力を生成しないためです。

ダリンと怠け者のすべての警告に加えて(彼らは正しいです)。この質問にはまだ学ぶべきことがあります。

出力を直接生成しないメソッドを実行する場合は、次のようにします。

@{ Response.Redirect("~/Account/LogIn?returnUrl=Products");}

これは、次のようなパーシャルのレンダリングにも当てはまります。

@{ Html.RenderPartial("_MyPartial"); }
于 2012-12-29T10:00:10.933 に答える
18

これは、ASP.NET MVC が使用されることになっている方法ではありません。ビューからリダイレクトしません。対応するコントローラー アクションからリダイレクトします。

public ActionResult SomeAction()
{
    ...
    return RedirectToAction("SomeAction", "SomeController");
}

あなたの例では、LogOnアクションにリダイレクトしようとしていることがわかりましたので、このリダイレクトを手動で行う必要はありませんが、認証を必要とするコントローラーアクションを[Authorize]属性で装飾するだけです:

[Authorize]
public ActionResult SomeProtectedAction()
{
    ...
}

これで、匿名ユーザーがこのコントローラー アクションにアクセスしようとすると、フォーム認証モジュールは、アクションに到達するかなり前にリクエストを自動的にインターセプトし、ユーザーを web.config ( ) で指定した LogOn アクションにリダイレクトしますloginUrl

于 2012-12-29T09:57:04.953 に答える
1

ビューの目的はモデルを表示することです。モデルを作成してビューに渡す前に、コントローラーを使用してリクエストをリダイレクトする必要があります。これにはController.RedirectToActionメソッドを使用します。

于 2012-12-29T09:56:49.547 に答える