在剃刀视图中,我可以访问模型状态对象:
@ViewData.ModelState如何在razor TagHelper中注入和访问ViewData或ModelState对象?我尝试了以下方法,但ViewData和ModelState始终为空:
public class ModelStateTagHelper : TagHelper
{
public ViewDataDictionary ViewData { get; set; }
public ModelStateDictionary ModelState { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
}
}发布于 2016-08-21 04:53:59
您可以注入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;
}
}发布于 2016-09-13 21:32:50
对于那些寻找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");
}
}https://stackoverflow.com/questions/39058433
复制相似问题