Использование ViewBag с другого контроллера? - PullRequest
0 голосов
/ 22 марта 2012

У меня есть метод действия VerifyNewUser (), который вызывается, когда пользователь нажимает URL-адрес в своем электронном письме (URL подтверждения регистрации).

Метод действия устанавливает свойство bool в ViewBag, обновляет пользователя допроверенный пользователь, затем я загружаю домашнюю страницу с пользователем, который автоматически вошел в систему. В представлении / 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);
        }
    }

ничего особенного в контроллере Home:

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

В домашнем представлении у меня есть этот код, который должен проверять, еслидомашняя страница загружается после нажатия на URL подтверждения и должна отображать диалоговое окно 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>   
   }

Спасибо за ваше время

1 Ответ

0 голосов
/ 22 марта 2012

Не используйте контроллер для установки атрибутов данных внутри 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)
   { 
        .....
        .....
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...