javascript – 返回视图在控制器中使用警报脚本后

这是一个对在C#代码中管理
JavaScript感兴趣的问题,而不是讨论这是否是一个好的设计.

我开始尝试使用this answer在控制器内创建警报.我明白,在控制器中使用JS并不常见.

如果我在控制器中创建警报,我该如何管理程序流然后返回视图.返回警报时会干扰显示视图的进度.

第一种方法是在DoSomething中暂停代码:

public ActionResult DoSomething()
{
    // code to get User
    if(User.Role == someRole)
    {
        return Content("<script language='javascript' type='text/javascript'>alert('Merchant on Hold');</script>");
     }
    // More code
}

public ActionResult Dashboard()
{
    // Do things
}

第二种方法是暂停仪表板中的代码.

public ActionResult DoSomething()
{
    // code to get User
    if(User.Role == someRole)
    {
        return RedirectToAction("Dashboard", "AppUser", new { message = 1 });
    }
    // More code
}

public ActionResult Dashboard(int? message)
{
    if(message == 1)
        return Content("<script language='javascript' type='text/javascript'>alert('Merchant on Hold');</script>");
    // Do things
}

我无法弄清楚如何使用返回内容显示警报,因为这会阻止控制器内的返回,或者是否有办法在关闭时指示警报.

我正在寻找一种方法来获得对警报之后的程序流的控制,因为它代表,它不会渲染视图,并且它返回的视图不需要参数.

刷新页面将导致警报重新显示.

所以我想知道这是否是一种可行的方式来显示警报,或者是否有办法在C#中管理它.

最佳答案 如果你真的想让你的程序流动,你可以使用TempData,但是我脑子里想到的东西可以在不使用TempData的情况下工作:

public ActionResult Dashboard(int? message)
{
    if(message == 1)
        return Content(@"<script language='javascript' type='text/javascript'>
                         alert('Merchant on Hold');
                         window.location.href='/AppUser/Dashboard?message=2'
                         </script>
                      ");
    // Do things
}

现在,当下次调用操作时,消息将具有值2,它将跳过显示警报并将继续前进以执行您需要的其他操作.

我希望它能让你知道我想说的是什么.

点赞