2016-05-03 10 views

答えて

2

ViewContextAttributeは、タグヘルパー内のビューでも利用可能なコンテキスト(オブジェクトなど)へのアクセスを提供します。あなたのタグのヘルパークラスの内部

、追加:

[ViewContext] 
public ViewContext ViewContext { get; set; } 

を...そして、あなたは、特定のリソースに得るためにあなたのタグヘルパーの残りの部分で使用するためのプロパティを作成することができ、同様:

protected HttpRequest Request => ViewContext.HttpContext.Request; 
protected HttpResponse Response => ViewContext.HttpContext.Response; 
protected ISession Session => ViewContext.HttpContext.Session; 
protected ITempDataDictionary TempData => ViewContext.TempData; 
その後、

そして、あなたのProcessメソッドの中からそれらを使用します。私の場合は

、私は、タグヘルパーと子(同封)タグヘルパーを(囲む)親の間で値を渡すために必要な。カスタムオブジェクトを作成して両方に注入することもできましたが、これをNuGetパッケージにする可能性はわずかなため、起動時にこのDIを設定するようユーザーに負担をかけたくありませんでした。だから、

、私は親タグヘルパーのプロセス()メソッドでこれを追加しました:

TempData.Set("Test", "Passed the test!"); 

を...そして子タグヘルパーでこれを追加しました:

object result; 
if (TempData.TryGetValue("Test", out result)) 
{ 
    string success = result.ToString(); 
} 

..それが働いた。 TempDataを使用しましたが、Sessionに依存します。セッションでも同じことができます。

+0

ここには、コンテキスト固有のタイプを挿入するために使用される他の属性のリストが含まれています。https://github.com/aspnet/Mvc/issues/4744 –

関連する問題