0

我有一个 MVC3 项目和一个 Library(.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"];

}

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

4

1 回答 1

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");
于 2012-06-10T11:03:00.197 回答