когда я добавляю пользовательский C# -logi c в тег img asp -append-version перестает работать
Кажется, он распознается как html <img>
элемент при использовании условного оператора ?:
в области объявления атрибутов элемента, что вызывает проблему.
Для достижения того же требования вы можете использовать @if
для управления запуском кода, как показано ниже.
@if (string.IsNullOrEmpty(Model.ImageId))
{
<img asp-append-version="true" src="@Model.Path" />
}
else
{
<img asp-append-version="true" id="@Model.ImageId" src="@Model.Path" />
}
Кроме того, вы можете попробовать реализовать настраиваемый ImageTagHelper , чтобы принимать ImageId
связанную информацию, а затем динамически генерировать атрибут id
для элемента <img>
.
private const string IdAttributeName = "asp-id";
//...
public override void Process(TagHelperContext context, TagHelperOutput output)
{
if (context == null)
{
throw new ArgumentNullException(nameof(context));
}
if (output == null)
{
throw new ArgumentNullException(nameof(output));
}
output.CopyHtmlAttribute(SrcAttributeName, context);
ProcessUrlAttribute(SrcAttributeName, output);
if (AppendVersion)
{
EnsureFileVersionProvider();
//...
if (!string.IsNullOrEmpty(Id))
{
output.Attributes.SetAttribute("id", Id);
}
output.Attributes.SetAttribute(SrcAttributeName, FileVersionProvider.AddFileVersionToPath(ViewContext.HttpContext.Request.PathBase, Src));
}
}
Используя пользовательский ImageTagHelper и установите asp-id
<img asp-append-version="true" asp-id="@Model.ImageId" src="@Model.Path" />
Результат теста
введите описание изображения здесь