0

たとえば、アクションリンクのあるビューがあります。

@Html.ActionLink("Action", "Controller")

Actionアクションはいくつかのビューを返します:

public ActionResult Action()
{
    string someModelForView = "some url i need to redirect after view was fully loaded";
    return View("SomeView", someModelForView);
}

someModelForView必要なのは、ビューが完全にロードされ、このページのすべてのJavaScriptが実行された後、モデルで定義されたurlにユーザーをリダイレクトすることです。このビューは空で、コンテンツがない可能性があります。JavaScriptを実行するだけで、その後ユーザーを外部ページにリダイレクトします。どうすればそれを達成できますか?

4

2 に答える 2

3

ビューがレンダリングされ、JavaScriptが読み込まれると、ユーザー(サーバー)は既に応答(返されたものにカプセル化されているActionResult)をクライアント(ブラウザー)に送信しています。したがって、ASP.NETMVCにリダイレクトさせることはできません。サーバーは要求の処理を終了しました。

ただし、代わりにJavaScriptリダイレクトを使用できます。

// Here goes your JavaScript code that needs to be executed
// ...

// ... and here comes the redirect:
window.location.href = "http://newurl.com";
于 2012-11-09T16:52:46.990 に答える
2

@achristovが提案しているように、リダイレクトを直接行うことができます。ただし、JavaScriptを実行するために戻る必要がある場合はSomeView、次を使用できます。

@model string
<html>
    <head>
    </head>
    <body>
        <script type="text/javescript">
            $(document).ready( function() {
                // all your javascript code...
                // ...and then:
                window.location = "@Model";
            });
        </script>
    </body>
</html>
于 2012-11-09T16:54:10.293 に答える