0

ユーザーが電子メールのURL(登録確認URL)をクリックしたときに呼び出されるアクションメソッドVerifyNewUser()があります。

アクションメソッドは、ViewBagにboolプロパティを設定し、ユーザーを確認済みユーザーに更新してから、ユーザーが自動的にサインインしたホームページをロードします。/Home/Indexビューで、設定したプロパティのViewBagを確認します。 trueの場合、jqueryuiダイアログを表示します。

ただし、ViewBagがnullであり、スクリプトがスキップされます。メッセージをhomeController.ViewBagに保存しているので、これでうまくいくと思いました。おそらく、ViewBagなしでこれを行うためのより良い方法がありますか?

public ActionResult VerifyNewUser()
    {
        if(everything checks out)  
        {
              HomeController homeController = new HomeController();
              homeController.ViewBag.RegisterationLoad = true;
              homeController.ViewBag.VerificationMessage = "Thank you! Your account has been activated";
              return View("../Home/Index", null);
        }
    }

ホームコントローラーには特別なことは何もありません。

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

ホームビューには、確認URLをクリックした後にホームページが読み込まれているかどうかを確認するコードがあり、jqueryuiダイアログが表示されます。

   @if (ViewBag.RegistrationLoad == "true")
   {
<script type="text/javascript">
    $("<div></div>").html("<span>@ViewBag.VerificationMessage</span>").dialog({
        width: 365, height: 165, minWidth: 365, minHeight: 165, maxWidth: 365, maxHeight: 165,
        autoOpen: true, modal: true, dialogClass: 'noTitleDialog', position: "center",
        buttons: {
            "Ok": function () {
                $(this).remove();
            }
        }
    });
</script>   
   }

御時間ありがとうございます

4

1 に答える 1

0

内のデータ属性を設定するためにコントローラーを使用しないでくださいViewBag。通常どおりに設定するだけで、どのビューからでもアクセスできます。正しく使用していることを確認してください。コードでは、内部にブールフラグを設定し、ViewBagそれを常に失敗する文字列と比較しています。

これを試して。

public ActionResult VerifyNewUser()
{
    if(everything checks out)  
    {
          ViewBag.RegisterationLoad = true;
          ViewBag.VerificationMessage = "Thank you! Your account has been activated";
          return View("../Home/Index", null);
    }
}

ビューで

   @if (ViewBag.RegistrationLoad == true)
   { 
        .....
        .....
   }
于 2012-03-22T00:01:00.130 に答える