我有一个MVC3项目和一个库(.dll)项目包含了我的一些代码,所以我需要在库项目中获取区域,控制器和动作名称,我在MVC项目中使用以下行:
string areaName = (string)Request.RequestContext.RouteData.DataTokens["area"] ?? "Root";
string controllerName = (string)Request.RequestContext.RouteData.Values["controller"];
string actionName = (string)Request.RequestContext.RouteData.Values["action"];
但是在库项目中,当我添加Request
using System.Web.Mvc;
个对象
public static void GetNames(){
//string areaName = (string)Request.RequestContext.RouteData.DataTokens["area"] ?? "Root";
//string controllerName = (string)Request.RequestContext.RouteData.Values["controller"];
//string actionName = (string)Request.RequestContext.RouteData.Values["action"];
}
那么,我怎样才能在图书馆项目中获得这个名字?
答案 0 :(得分:6)
最好的方法是将它们作为参数传递,而不是让类库获取它们,因为这样就可以强烈地将类库与Web应用程序耦合。
但如果你坚持要求他们,你将不得不使用我不推荐的HttpContext.Current
:
var context = new HttpContextWrapper(HttpContext.Current);
var rd = context.Request.RequestContext.RouteData;
string controller = rd.GetRequiredString("controller");
string action = rd.GetRequiredString("action");