0

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しかし、ライブラリ Projectでは、追加してもオブジェクトにアクセスできません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"];

}

では、Library プロジェクトでこの名前を取得するにはどうすればよいですか?

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 に答える