2016-08-20 6 views
1

私は、モデルの状態オブジェクトにアクセスすることができます。TagHelperにViewDataDictionaryまたはModelStateDictionaryを挿入するにはどうすればよいですか?かみそりビューで

@ViewData.ModelState 

私はかみそりTagHelperViewDataまたはModelStateオブジェクトを注入してアクセスできますか?しかし私は、ViewDataModelStateは常にnullで、次のことを試してみました:

public class ModelStateTagHelper : TagHelper 
{ 
    public ViewDataDictionary ViewData { get; set; } 
    public ModelStateDictionary ModelState { get; set; } 

    public override void Process(TagHelperContext context, TagHelperOutput output) 
    { 
    } 
} 

答えて

3

あなたはIActionContextAccessorを注入することができます

あなたが ViewContextを追加することができます ViewDataなく ModelStateをお探しの方については、
public void ConfigureServices(IServiceCollection services) 
    { 
     //... 
     services.AddSingleton<IActionContextAccessor, ActionContextAccessor>(); 
    } 

    public class ModelStateTagHelper : TagHelper 
    { 
     public readonly IActionContextAccessor _accessor; 

     public ModelStateTagHelper(IActionContextAccessor accessor) 
     { 
      _accessor = accessor; 
     } 
     public override void Process(TagHelperContext context, TagHelperOutput output) 
     { 
      var modelState = _accessor.ActionContext.ModelState; 
     } 
    } 
+1

これはモデルの状態を示しますが、ViewDataはどうでしょうか? –

2

あなたのTagHelper

public class EmailTagHelper : TagHelper 
{ 
    [ViewContext] 
    public ViewContext ViewContext { get; set; } 

    public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) 
    { 
     var hasACertainKey = this.ViewContext.ViewData.ContainsKey("ACertainKey"); 
    } 
} 
関連する問題