Пользовательский помощник тегов Razor не применяется ко всем тегам и не устанавливает значение атрибутаC#

Место общения программистов C#
Ответить
Anonymous
 Пользовательский помощник тегов Razor не применяется ко всем тегам и не устанавливает значение атрибута

Сообщение Anonymous »

Я использую приложение ASP.NET Core 8 MVC с представлениями Razor. Я написал собственный ScriptTagHelper, чтобы добавить атрибут nonce ко всем тегам скрипта.
Он выглядит так:

Код: Выделить всё

[HtmlTargetElement("script")]
public class ScriptTagHelper(IHttpContextAccessor httpContextAccessor) : TagHelper
{
private readonly IHttpContextAccessor _httpContextAccessor = httpContextAccessor;

public override void Process(TagHelperContext context, TagHelperOutput output)
{
var httpContext = _httpContextAccessor.HttpContext;

// This is set in Program.cs
if (httpContext?.Items["CSP-Nonce"] is string nonce)
{
output.Attributes.SetAttribute("foo", "bar");
output.Attributes.SetAttribute("nonce", "blah" /*new HtmlString(nonce)*/);
}
}
}
Я вижу, что атрибуты «foo» и «nonce» добавляются ко всем тегам сценария, но только атрибут «foo» получает значение. Атрибут «nonce» — это просто атрибут, без значения.
Теги встроенных скриптов не получают ни одного атрибута. Изменить: Это произошло потому, что встроенные скрипты, которые я проверял, были из части, к которой применялся другой _ViewImports.
Итак, я вижу следующее:< /p> Я поставил точку останова на второй вызов SetAttribute, и она вызывается для всех тегов скрипта, которые есть на странице, она просто упорно отказывается устанавливать значение ( и сопоставлять встроенные теги).
Какой совет?

Подробнее здесь: https://stackoverflow.com/questions/792 ... bute-value
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»