这是一个对在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,它将跳过显示警报并将继续前进以执行您需要的其他操作.
我希望它能让你知道我想说的是什么.