2

何をしたかわかりませんが、今私のサイトはこれを URL として表示しています:

http://localhost:53187/Customer/AccountScreen?UserName=testx&Password=test12345&RememberMe=False&AccountId=5b89d595-ef19-4feb-b95d-bf39672c9ac4

次のように顧客のアカウント画面を呼び出しています。

return RedirectToAction("AccountScreen", "Customer", model);

そのため、なぜこれが現在 URL に表示されているのかわかりません。それは本当に悪い習慣のように思えます。

これを防ぐ方法はありますか?

4

3 に答える 3

2

モデルを RedirectToAction メソッドに渡す理由は明らかではありません。3 番目のパラメーターは routeValues 用です。

routeValues パラメータに渡すものは何でも、URL でそのプロパティを公開します。3 番目のパラメータを削除するだけで問題ありません。AccountScreen に何かを渡す必要がある場合は、次のようなものを使用します

return RedirectToAction("AccountScreen", "Customer", new { id = model.Id });
于 2012-12-30T00:33:12.317 に答える
2

関心のある値のみを含めることができます。

return RedirectToAction(
    "AccountScreen", 
    "Customer", 
    new { AccountId = mode.AccountId }
);

にリダイレクトしますhttp://localhost:53187/Customer/AccountScreen?AccountId=5b89d595-ef19-4feb-b95d-bf39672c9ac4

于 2012-12-29T22:51:04.573 に答える
1

RedirectToActionメソッドはHTTP 302ブラウザーに応答を返します。これにより、ブラウザーGETは指定されたアクションへの要求を行います。したがって、ルート値としてモデルを使用した get リクエストが表示されます。HTTP は POST を使用したリダイレクトをサポートしていないため、変更できません。

できること - ブラウザーに戻らずにコントローラーからメソッドを呼び出します (これが同じコントローラーの場合):

return AccountScreen(model);

TempDataを使用してモデルを保存できます (これも GET 要求になりますが、モデルはルート値で渡されず、セッションに保存されます)。コントローラーで:

TempData["model"] = model;
return RedirectToAction("AccountScreen", "Customer");

顧客コントローラーで:

public ActionResult AccountScreen()
{
    YourModel model = TempData["model"] as YourModel;
    //...
}
于 2012-12-29T22:48:02.263 に答える