Мы сталкиваемся со следующей ошибкой при сборке приложения ASP.NET Core MVC, которое недавно было перенесено с .NET Core 2.2 на 3.0:
Вспомогательный тег 'input' (или 'textarea' или любой другой) не должен иметь C# в области объявления атрибутов элемента.
Мы использовали Razor @functions
для возврата содержимого атрибута HTML, чтобы преодолеть эту проблему, но это выглядит уродливо, когда вы используете переменную для возврата из функции без какой-либо дополнительной логики (функция dummy(htmlAttributeContent)
возвращает htmlAttributeContent
)
@{
var roAttrHTML = "";
if (!user.GotAccessToken("someToken")) {
roAttrHTML = " readonly=\"readonly\" ";
}
}
<textarea class="testClass" asp-for="testId" @readonlyAttribute>@Model.Id</textarea>
На самом деле мы получили ошибку
Вспомогательная функция тега textarea не должна содержать C# в области объявления атрибутов элемента.
при компиляции нашего приложения ASP.NET Core MVC, тогда как нам нужен подход (лучше без использования @functions
), который даст нам способ преодолеть эту проблему (поскольку у нас есть множество страниц с похожей логикой, которые нам нужно коснуться один раз и избежать любых возможные проблемы с предполагаемыми новыми изменениями в поддержке атрибутов в будущих версиях .NET Core)
@readonlyAttribute
? Я также мог получить ту же ошибку в ядре asp.net 2.2. Почему бы не попробоватьreadonly=@readonlyAttribute
? - person Rena   schedule 13.11.2019readonly
, когда оно есть, поле доступно только для чтения - person Matus   schedule 01.05.2021