私はActionFilterを作成しており、ActionExecutingContextパラメータからエリア名を取得する必要があります(クイックダーティーなログインベースのセキュリティを実装したい)。出来ますか?ActionExecutingContextからエリア名を取得
2
A
答えて
2
MVCソースコードから:
static string GetAreaName(RouteBase route)
{
var area = route as IRouteWithArea;
if (area != null)
{
return area.Area;
}
var route2 = route as Route;
if ((route2 != null) && (route2.DataTokens != null))
{
return (route2.DataTokens["area"] as string);
}
return null;
}
static string GetAreaName(RouteData routeData)
{
object obj2;
if (routeData.DataTokens.TryGetValue("area", out obj2))
{
return (obj2 as string);
}
return GetAreaName(routeData.Route);
}
+0
残念ながら、これらのメソッドは内部クラスの内部にあります:) – SiberianGuy
+0
しかし、MVC Futuresには同様のパブリッククラスがあります – SiberianGuy
0
使用
@Html.Controller();
@Html.Action();
@Html.Id();
@Html.Area();
コード
public static class HtmlRequestHelper
{
public static string Id(this HtmlHelper htmlHelper)
{
var routeValues = HttpContext.Current.Request.RequestContext.RouteData.Values;
if (routeValues.ContainsKey("id"))
return (string)routeValues["id"];
else if (HttpContext.Current.Request.QueryString.AllKeys.Contains("id"))
return HttpContext.Current.Request.QueryString["id"];
return string.Empty;
}
public static string Controller(this HtmlHelper htmlHelper)
{
var routeValues = HttpContext.Current.Request.RequestContext.RouteData.Values;
if (routeValues.ContainsKey("controller"))
return (string)routeValues["controller"];
return string.Empty;
}
public static string Action(this HtmlHelper htmlHelper)
{
var routeValues = HttpContext.Current.Request.RequestContext.RouteData.Values;
if (routeValues.ContainsKey("action"))
return (string)routeValues["action"];
return string.Empty;
}
public static string Area(this HtmlHelper htmlHelper)
{
var dataTokens = HttpContext.Current.Request.RequestContext.RouteData.DataTokens;
if (dataTokens.ContainsKey("area"))
return (string)dataTokens["area"];
return string.Empty;
}
}
関連する問題
- 1. ActionExecutingContextからルートのテンプレートを取得する方法
- 2. コントローラの.NetコアからActionExecutingContext経由でカスタム属性を取得
- 3. HttpContextBaseからActionExecutingContextを取得する方法
- 4. エリア、コントローラ、アクションからVirtualPathを取得
- 5. エリアの概要を取得
- 6. コントローラー内のエリアの名前を取得する
- 7. WebApiでエリア名を取得するには?
- 8. エリアからhtml要素を取得する
- 9. ActionExecutingContext RouteData
- 10. スプリングセキュリティJavaエリアのcsrfトークンを取得
- 11. Fabricjs:エリアを取得するには?
- 12. タンゴのAPIから現在のエリアの説明を取得するUnityを介してDLLを取得する
- 13. PSシェルプロンプトからリモートセッション名を取得
- 14. PhotoPrevs.appendからファイル名を取得する
- 15. PhantomJSからUNIXホスト名を取得
- 16. MDB内からキュー名を取得
- 17. ディレクトリからファイル名を取得KSH Unix
- 18. jdbc:java.sql.TypeコードからSQLタイプ名を取得
- 19. ブートストラップカラーピッカーからカラー名を取得
- 20. Exchangeからの署名を取得
- 21. ファイルポインタからファイル名を取得
- 22. Symfony2 URLからルート名を取得
- 23. Pythonのパッケージからモジュール名を取得
- 24. Wordpressはスタイルシートからテーマ名を取得
- 25. Keychainからアカウント名を取得する
- 26. PrestaShop:webserviceからカテゴリ名を取得
- 27. FTPからファイル名のリストを取得
- 28. Windowsからフルオーディオデバイス名を取得
- 29. ファイルチューザからファイル名を取得
- 30. クラスオブジェクトからクラス名を取得
*可能性* [ASP.NET MVCの重複 - で現在の領域名を取得します。ビューまたはコントローラ](http://stackoverflow.com/questions/27236) 8934/asp-net-mvc-get-current-area-name-in-view-or-controller) – bzlm