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,因此在重定向中它会被触发。
我真的不知道如何处理它。
思路很简单:用户按下下一页按钮,但返回数据为空,这意味着上一页是最后一页。用户被重定向到当前页面(最后一个有数据的页面)所以他们不会走得太远,但我想告诉他们为什么他们不能走得更远。
[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,因此在重定向中它会被触发。