猿问

从控制器内部获取控制器和动作名称?

对于我们的Web应用程序,我需要保存获取和显示的项目的顺序,具体取决于视图-确切地说,是生成视图的控制器和操作(当然还有用户ID,但这不是重点)。

我认为不仅要在每个控制器动作中自己给出一个标识符(以便将其用于与视图有关的数据库输出排序),我认为通过从其获取的控制器和动作方法自动创建该标识符将更安全,更轻松。从。

如何从控制器的action方法中获取控制器的名称和动作?还是我需要为此反思?我想这很容易,谢谢您!


慕哥9229398
浏览 479回答 3
3回答

繁花如伊

可能有用。我需要在控制器的构造函数中执行操作,该操作出现在MVC生命周期的这一点,this尚未初始化,并且ControllerContext = null。我没有研究MVC生命周期并找到要覆盖的适当函数名称,而是在中找到了操作RequestContext.RouteData。但是,为了这样做,就像HttpContext构造函数中的任何相关用法一样,您必须指定完整的名称空间,因为this.HttpContext还没有初始化。幸运的是,它似乎System.Web.HttpContext.Current是静态的。// controller constructorpublic MyController() {    // grab action from RequestContext    string action = System.Web.HttpContext.Current.Request.RequestContext.RouteData.GetRequiredString("action");    // grab session (another example of using System.Web.HttpContext static reference)    string sessionTest = System.Web.HttpContext.Current.Session["test"] as string}注意:可能不是访问HttpContext中所有属性的最受支持的方法,但是对于RequestContext和Session,它似乎在我的应用程序中可以正常工作。
随时随地看视频慕课网APP
我要回答