ASP.NET Core 5.0 MVC - 在控制器中生成弹出消息

ASP.NET Core 5.0 MVC - generate pop up message in controller

我真的不知道如何处理它。

思路很简单:用户按下下一页按钮,但返回数据为空,这意味着上一页是最后一页。用户被重定向到当前页面(最后一个有数据的页面)所以他们不会走得太远,但我想告诉他们为什么他们不能走得更远。

        [HttpGet]
        public IActionResult Index(int page = 1)
        {
            var data = new List<DataModel>();

            page = page < 1 ? 1 : page;
            ViewBag.CurrentPage = page;

            try
            {
                var data = ...get data...

                if (data.Count == 0 && page > 1)
                {
                    //declare pop up message
                    return RedirectToAction("Index", new { page = page - 1 });                  
                }
            }
            catch (TimeoutException)
            {
                return RedirectToAction("Index", "Error");
            }
            return View(data);
        }

我尝试了一些谷歌搜索,但这看起来很麻烦,即使它在一个浏览器中有效,在另一个浏览器中也无效。我不希望你会为我做这件事,但我想要一些指导,哪种解决方案是最佳的。

一种方法是在您的 Index 方法中定义自定义参数:

[HttpGet]
public IActionResult Index(int page = 1, bool isLastPage = false) {
 /* ... */
}

现在默认情况下这是错误的。现在您可以检查它是否正确并相应地设置您的 ViewModel 或 ViewBag/Data 标志:

[HttpGet]
public IActionResult Index(int page = 1)
{
    var data = new List<DataModel>();

    page = page < 1 ? 1 : page;
    ViewBag.CurrentPage = page;
    //pass flag to view here
    ViewBag.IsLastPage = isLastPage;

    try
    {
        var data = ...get data...

        if (data.Count == 0 && page > 1)
        {
            //declare pop up message
            return RedirectToAction("Index", new { page = page - 1, isLastPage = true });                  
        }
    }
    catch (TimeoutException)
    {
        return RedirectToAction("Index", "Error");
    }
    return View(data);
}

在您的 RedirectToAction 调用中,您将标志设置为 true,因此在重定向中它会被触发。