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 次 |
| 最近记录: |