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

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

我开始尝试使用此答案在控制器内创建警报。 据我所知,在控制器中使用JS并不常见。

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

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

public ActionResult DoSomething() { // code to get User if(User.Role == someRole) { return Content("alert('Merchant on Hold');"); } // 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("alert('Merchant on Hold');"); // Do things } 

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

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

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

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

如果你真的想让你的程序流动,你可以使用TempData,但是我想到了一些可以在不使用TempData的情况下工作的东西:

 public ActionResult Dashboard(int? message) { if(message == 1) return Content(@" "); // Do things } 

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

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

我不确定我是否理解你正在寻找什么,但这是你想要的吗?

 public ActionResult DoSomething() { HttpCookie cookie = new HttpCookie("ShowAlert"); cookie.Value = "1"; this.ControllerContext.HttpContext.Response.Cookies.Add(cookie); return RedirectToAction("Dashboard", "Home", new { message = 1 }); } public ActionResult Dashboard(int? message) { if (!this.ControllerContext.HttpContext.Request.Cookies.AllKeys.Contains("ShowAlert")) { return View("Index"); } HttpCookie cookie = this.ControllerContext.HttpContext.Request.Cookies["ShowAlert"]; cookie.Expires = DateTime.Now.AddDays(-1); this.ControllerContext.HttpContext.Response.Cookies.Add(cookie); if (message == 1) return Content(""); else return Content(""); } }