如何在 .net 中获取主控制器和动作名称
How to get main controller and action name in .net
我有一个 .net 核心 mvc web 项目,我正在尝试在操作中获取操作和控制器名称。例如
string actionName = ControllerContext.RouteData.Values["action"].ToString();
string controllerName = ControllerContext.RouteData.Values["controller"].ToString();
这些代码为我提供了控制器和操作的价值,但我想知道哪个页面确实发送了 post。
例如:我们在该控制器内部有 HomeController
和 RequestQuote
操作。如果另一个页面触发来自不同控制器和动作的 RequestQuote
动作,我想获取该控制器和动作名称。我希望我能清楚我的意思。
这是一个您可以关注的工作演示:
登录控制器
public class LoginController : Controller
{
public IActionResult Index()
{
return RedirectToAction("RequestQuote", "Home");
}
}
家庭控制器
public class HomeController : Controller
{
public ActionResult RequestQuote()
{
string controllerName = HttpContext.Session.GetString("controller");
string actionName = HttpContext.Session.GetString("action");
return View();
}
}
动作过滤器:
public class CustomFilter : IActionFilter
{
public void OnActionExecuted(ActionExecutedContext context)
{
string actionName = context.HttpContext.Request.RouteValues["action"].ToString();
string controllerName = context.HttpContext.Request.RouteValues["controller"].ToString();
context.HttpContext.Session.SetString("controller", controllerName);
context.HttpContext.Session.SetString("action", actionName);
}
public void OnActionExecuting(ActionExecutingContext filterContext)
{
}
}
在Startup.cs中注册服务:
services.AddControllersWithViews(opt => {
opt.Filters.Add(new CustomFilter());
});
我有一个 .net 核心 mvc web 项目,我正在尝试在操作中获取操作和控制器名称。例如
string actionName = ControllerContext.RouteData.Values["action"].ToString();
string controllerName = ControllerContext.RouteData.Values["controller"].ToString();
这些代码为我提供了控制器和操作的价值,但我想知道哪个页面确实发送了 post。
例如:我们在该控制器内部有 HomeController
和 RequestQuote
操作。如果另一个页面触发来自不同控制器和动作的 RequestQuote
动作,我想获取该控制器和动作名称。我希望我能清楚我的意思。
这是一个您可以关注的工作演示:
登录控制器
public class LoginController : Controller
{
public IActionResult Index()
{
return RedirectToAction("RequestQuote", "Home");
}
}
家庭控制器
public class HomeController : Controller
{
public ActionResult RequestQuote()
{
string controllerName = HttpContext.Session.GetString("controller");
string actionName = HttpContext.Session.GetString("action");
return View();
}
}
动作过滤器:
public class CustomFilter : IActionFilter
{
public void OnActionExecuted(ActionExecutedContext context)
{
string actionName = context.HttpContext.Request.RouteValues["action"].ToString();
string controllerName = context.HttpContext.Request.RouteValues["controller"].ToString();
context.HttpContext.Session.SetString("controller", controllerName);
context.HttpContext.Session.SetString("action", actionName);
}
public void OnActionExecuting(ActionExecutingContext filterContext)
{
}
}
在Startup.cs中注册服务:
services.AddControllersWithViews(opt => {
opt.Filters.Add(new CustomFilter());
});