在库项目中获取操作,控制器和区域名称

时间:2012-06-10 11:01:23

标签: asp.net-mvc asp.net-mvc-3 dll

我有一个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"];

}

那么,我怎样才能在图书馆项目中获得这个名字?

1 个答案:

答案 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");