Посмотрите документ (измените версию, если она неправильная): https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/authoring?view=aspnetcore-2.2
Исходя из примера, то, что вы ищете, должно выглядеть следующим образом
(непроверенный пример) :
public override void Process(TagHelperContext context, TagHelperOutput output){
// Should already be input, but in case you want to change it to something else
output.TagName = "input";
// remove the old attribute
// You probably need to do something different if you want to carry over the attribute
output.Attributes.RemoveAll("asp-for");
output.Attributes.SetAttribute("type", "file");
output.Attributes.SetAttribute("data-val", "true");
output.Attributes.SetAttribute("data-val-required", "Please select a file.");
output.Attributes.SetAttribute("id", "files");
output.Attributes.SetAttribute("multiple", "multiple");
output.Attributes.SetAttribute("name", "files");
}
Я не уверен, что вы действительно можете использовать это для предопределенного тега (например, ввода), вам может быть лучше, если вы создадите пользовательский тег (чего-то, что еще не существует).
Поскольку вы не опубликовали ни одного примера для используемой аннотации, допустим, вы изменили его на:
<custominput asp-for='files' />
тогда должно быть что-то подобное на вас, TagHelper Class.
[HtmlTargetElement("custominput", TagStructure = TagStructure.WithoutEndTag)]
Приведенный выше пример игнорирует вашу модель, поэтому я предполагаю, что если вы хотите использовать ее, вам нужно каким-то образом предоставить ее вашему классу TagHelper и соответствующим образом изменить строки SetAttribute.