Mar*_*mro 3 c# asp.net-core asp.net-core-tag-helpers
在剃刀视图中,我可以访问模型状态对象:
@ViewData.ModelState
Run Code Online (Sandbox Code Playgroud)
我如何在剃须刀中注射和访问ViewData
或ModelState
对象TagHelper
?我尝试了以下,但是ViewData
并且ModelState
始终为null:
public class ModelStateTagHelper : TagHelper
{
public ViewDataDictionary ViewData { get; set; }
public ModelStateDictionary ModelState { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
}
}
Run Code Online (Sandbox Code Playgroud)
对于那些寻找ViewData
而不是那些的人ModelState
,你可以添加ViewContext
到你的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");
}
}
Run Code Online (Sandbox Code Playgroud)
您可以注入IActionContextAccessor
:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
897 次 |
最近记录: |