C# .NET Core从无法返回重定向的方法将用户发送到页面

C# .NET Core从无法返回重定向的方法将用户发送到页面,c#,.net,C#,.net,我的控制器类中有一个方法,它返回一个元组,并在控制器其余部分执行之前运行: private async Task<(int userId, int userRoleId, bool accountVerified)> GetUserRole() { var identifier = User.Identity.Name; var user = await _context.User.Where(x => x.UserEmail == User.identifier).F

我的控制器类中有一个方法,它返回一个元组,并在控制器其余部分执行之前运行:

private async Task<(int userId, int userRoleId, bool accountVerified)> GetUserRole()
{
  var identifier = User.Identity.Name;
  var user = await _context.User.Where(x => x.UserEmail == User.identifier).FirstOrDefaultAsync();
  
  //this is an oddly specific condition that differs for every controller class. Causes a compiler error as written
  if (!user.Approved && (user.RoleId == 1 || user.RoleId == 7))
  {
     return RedirectToAction("Index", "Notifications");
  }
  //this returns data that is used in the controller methods
  else
  {
     return (user.UserId, user.RoleId, user.Approved);
  }
}
private异步任务GetUserRole()
{
var标识符=User.Identity.Name;
var user=await_context.user.Where(x=>x.UserEmail==user.identifier).FirstOrDefaultAsync();
//这是一个奇怪的特定条件,每个控制器类都不同。导致编写时出现编译器错误
如果(!user.Approved&&(user.RoleId==1 | | user.RoleId==7))
{
返回重定向操作(“索引”、“通知”);
}
//这将返回控制器方法中使用的数据
其他的
{
返回(user.UserId、user.RoleId、user.Approved);
}
}
我有几个控制器类,其中声明了这个方法。目前,我在每个视图方法中声明了上述重定向(
Index()
Create()
Edit()
,等等)。在逻辑已经存在的情况下,为每个需要它的控制器声明一个新的授权策略似乎有点浪费

有没有一种方法可以重定向用户而不声明
return RedirectToAction(…)


还是我完全遗漏了什么?

是的,你需要研究一下MVC/WebApi属性,你能详细说明一下吗?我知道MVC需要一个路由来确定显示的页面。有什么原因我不能创建独立命令来重定向用户以响应给定条件吗?您可能需要某种请求筛选器()来填充属性/拒绝请求。这看起来很有希望。不过,解析文档可能需要一些时间。