【问题标题】:How to pass a viewbag with RedirectToAction如何使用 RedirectToAction 传递 viewbag
【发布时间】:2020-03-04 06:10:02
【问题描述】:

我有一个控制器,它为ViewBag 分配了一个值,并且在脚本中使用了ViewBag

这是我的代码,我不知道有什么问题,我什至尝试使用 TempData,但每次显示我的 ViewBag 为空时都没有任何反应。

public ActionResult ChechUserNP(Login dd)
{
    if (dd.userid == "admin" && dd.pwd == "admin")
    {
        return RedirectToAction("Index", "DataGridView");
    }
    else
    {
        @ViewBag.Message = "MyMessage";
        return RedirectToAction("Index", "Login");
    }
}
<script>
    debugger;
    if (@ViewBag.Message !== null) {
    }
</script>

【问题讨论】:

    标签: javascript c# asp.net-mvc razor


    【解决方案1】:

    考虑改用TempData,因为它专门针对涉及重定向的场景。

    TempData["Message"] = "MyMessage";
    return RedirectToAction("Index", "Login");
    

    【讨论】:

    • William 如果我们使用 TemData,我如何在脚本中接受它?
    • 您应该能够像 ViewBag 等其他来源一样读取/访问它(例如 @TempData["Message"])。
    • 所以如果我访问它,我可以像 if (@TempData["Message"] !== null) { 一样访问它
    • 这是一个外部脚本文件吗?如果是这样,您将无法以这种方式访问​​它。如果您打算直接在 Javascript 中使用该值,我建议将值包装在单引号中并将其存储在变量中,例如var message = '@TempData["Message"]'; 然后你可以在你的 Javascript 代码中引用该变量,例如if(message !== '') { ... }。这仅取决于您是在 in Javascript 还是在 Razor 中引用它。
    猜你喜欢
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 2020-05-04
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    相关资源
    最近更新 更多