我有一个操作方法VerifyNewUser(),当用户点击他们的电子邮件中的网址(注册验证网址)时会调用该方法。
action方法在ViewBag中设置bool属性,将用户更新为已验证的用户,然后我加载主页,用户自动登录。在/ Home / Index视图中,我想检查ViewBag属性我设置并显示一个jquery ui对话框,如果它是真的。
但是,我的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();
}
在主视图中,我有这个代码,它应该在点击验证网址后检查主页是否正在加载,并且应该显示一个jquery ui对话框:
@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>
}
感谢您的时间
答案 0 :(得分: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)
{
.....
.....
}