0

ユーザーログインが有効な場合、以下に示すように、ビューを別のビューにリダイレクトします。次のメソッドはControllerクラスにあります。

 if (loginSuccess(email,pwd))
 {                   
    FormsAuthentication.SetAuthCookie(email, false);
    return RedirectToAction("Index", "SuccessPage");   

}

次に、リダイレクトされたビュー(である)にユーザー名を表示したいと思います/SuccessPage/Index。これどうやってするの ?

4

4 に答える 4

3

リダイレクトでパラメーターを渡すことができます。

if (loginSuccess(email,pwd))
 {                        
    string name = User.Identity.Name;
    return RedirectToAction("Index", "SuccessPage"), new {username = name };   
}

(明らかに、コントローラ アクションは、値を渡す前に username 属性にアクセスできる必要があります)

:上記の例は、リダイレクトで追加のパラメーターを渡す方法を理解するのに役立ちますが、この場合User.Identity.Name、ユーザーが認証されるとセッションで使用可能になり、任意のコントローラーまたはビューからアクセスできるため、やり過ぎです。パスします ( Josh の応答を参照してください)。

于 2013-02-22T19:30:27.097 に答える
2

ユーザーが認証されると、 を使用しHttpContextて基本的なユーザー情報を取得できます。たとえば、次を使用してユーザー名を取得できます。

string userName = HttpContext.User.Identity.Name;

コントローラー間の情報の受け渡しについて心配する必要はありません。ユーザーが認証されている限り、情報は利用可能です。

于 2013-02-22T19:37:47.990 に答える
1

SuccessPage.Index アクションで、ユーザーの名前を取得し、モデルを介してビューに渡します。

ユーザーの名前を取得するには、保存されたセッション変数から取得するか、controller.HttpContext.User.Identity.Name を使用できます。

于 2013-02-22T19:39:47.110 に答える
1

データの受け渡しについて話しているだけの場合、4 つのオプションがあります。(ユーザー名だけについて話している場合は、Josh の応答が必要です)

リダイレクトでパラメーターを渡す (ジャックが提案したように)

return RedirectToAction("Index", "SuccessPage"), new {username = name };

一時データに保存する (1 つのリクエストに対してのみ機能する)

TempData[Key] = name;
return RedirectToAction("Index", "SuccessPage");

セッションに保存する(セッションが続く限り続く)

Session[Key] = name;
return RedirectToAction("Index", "SuccessPage");   

データベースに保存し、セッションIDを介してそのデータをリンクします。

/* databasey code here */ 
return RedirectToAction("Index", "SuccessPage");   

これは、最も単純なものから最も複雑なものまで、オプションの完全なセットです。あなたの場合、システムが拡大して成長するにつれて、URL(最初の値)に値を渡すだけで、他のオプションを試すことを検討することをお勧めします。

TempData は、ページを更新すると持続しないことに注意してください。

于 2013-02-22T19:41:43.457 に答える