2017-05-08 3 views
0

私はASP.NETの初心者で、コントローラの一時データを使用してViewBagにデータを取得しようとしています。私はuser.Usernameuser.Emailでそれを得ましたが、それぞれViewBag.NameViewBag.Emailには入っていません。私のコードは、ViewBagでどうやって得ることができるのですか?ASP.NET:ViewBagの一時データにアクセスする

QuestionsContoller.cs

public class temp { 
    public string username { get; set; } 
    public string email { get; set; } 
} 

public ActionResult Question() { 
    return View(); 
} 

[HttpPost]

[ValidateAntiForgeryToken]

public ActionResult Question(User user) { 
    temp temp_user = new temp(); 
    temp_user.email = user.Email; 
    temp_user.username = user.Username; 
    return RedirectToAction("Answers" , temp_user); 
} 

public ActionResult Answers(temp temp_user) { 
    User user = new Models.User(); 
    user.Username = temp_user.username; 
    user.Email = temp_user.email; 
    ViewBag.Name = user.Username; 
    ViewBag.Email = user.Email; 
    return View(user); 
} 
+0

「どのようにViewBagで取得できますか?」あなたのビューにあなたのViewBagデータを取得したいですか? – CodeNotFound

+0

はい、それから私は私のビューでそれを取得します。 –

+0

ビューにデータを取得する必要がありますか? – CodeNotFound

答えて

1

あなたはペイロードにリダイレクトすることはできません。リダイレクトは、通常は302のステータスコードと、次に要求されるべきURLを示すLocationというヘッダーを持つ空白の応答です。このタイプの応答を受け取ったクライアントは、通常、そのURLに対して新しいリクエストを行います。重要なことに、クライアントはこのリクエストとともに追加のデータを渡すことを知らないか気にかけないので、tempオブジェクトが含まれていることを強制することはできません。あなたが要求間でデータを永続化する必要がある場合は

、あなたはTempDataに追加することができます:

TempData["temp_user"] = temp_user; 

をそしてあなたにリダイレクトアクションでそれをフェッチ経由:

var temp_user = TempData["temp_user"] as temp; 
また

(とできれば)ユーザーIDでリダイレクトし、ユーザーを再度検索します。セッションの使用(TempData)は可能な限り避けてください。

return RedirectToAction("Answers", new { userId = user.Id }); 
関連する問題