このコードはどこでも使用でき、UrlHelperやコンテキストは必要ありません。
RouteValueDictionary rvd = new RouteValueDictionary
{
{"controller", "ControllerName"},
{"action", "ActionName"},
{"area", ""}
};
VirtualPathData virtualPathData
= RouteTable.Routes.GetVirtualPath(null, new RouteValueDictionary());
return virtualPathData.VirtualPath;
これは、プロパティ'HttpContext.Current'がnullでない場合にのみ機能します。これは、Webアプリで実行されているコードに当てはまります。GetVirtualPathの最初のパラメーターを指定しない場合、システムは前述の静的プロパティによって返されるコンテキストを使用します。
したがって、このメソッドを使用して、コンテキストを指定せずにURLを取得できることは事実です。
コンテキストは、サーバーの情報と、アプリが実行されている仮想ディレクトリ(存在する場合)があるため、常に必要です。