Sae*_*eid 0 dll asp.net-mvc asp.net-mvc-3
我有一个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"];
Run Code Online (Sandbox Code Playgroud)
但是在库项目中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"];
}
Run Code Online (Sandbox Code Playgroud)
那么,我怎样才能在图书馆项目中获得这个名字?
最好的方法是将它们作为参数传递,而不是让类库获取它们,因为这样您就可以将类库与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");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2624 次 |
| 最近记录: |