ActionDescriptor
アクションとそのコントローラーに関する情報を取得する があります。
ActionDescriptor desc = ...;
string action = desc.ActionName;
string controller = desc.ControllerDescriptor.ControllerName;
string area = ?;
私が現在行っている名前空間を解析するよりも、コントローラーの領域を決定するためのより良い方法があるかどうか疑問に思っています。
// e.g., Company.Areas.Foo.Controllers
var parts = desc.ControllerDescriptor.ControllerType.Namespace.Split('.').ToList();
var areaIndex = parts.IndexOf("Areas");
if (areaIndex > -1) area = parts[areaIndex + 1];
// area = "Foo"
編集:
私はビューやコントローラーのコンテキストではなく、そのType
情報などからのみ領域を特定しようとしていることを明確にする必要があります。