Хотя это и несколько странно, есть несколько способов выбраться из «блестящего» способа делать вещи и выполнить CSS-модификацию элемента.
Простейший : Точно так же, как вы можете использоватьатрибут class, используйте атрибут style
<element style=@myStyle></element>
@code {
string myStyle;
void MyMethod() {
myStyle="overflow-y: hidden;"
}
}
Advanced : используйте JS interop
a. На главном экране (index.html
или Pages/_Host.cshtml
в зависимости от типа проекта) создайте конечную точку js для своего компонента
<script>
window.applyStyleForElement = function(styleOp) {
document.getElementById(styleOp.id).style[styleOp.attrib] = styleOp.value;
}
</script>
b. В файле бритвы:
@Inject IJRRuntime JSRuntime
<element id=@myId></element>
@code {
string myId = Guid.NewGuid().CreateGuid().ToString("n)
async Task MyMethod() {
await JSRuntime.InvokeAsync("applyStyleForElement",
new { id = myId, attrib = "overflowY", value = "hidden" });
}
}
И наконец, применение к вашему особому случаю с элементом body («продвинутый» метод выше).
a. На главном экране (index.html
или Pages/_Host.cshtml
в зависимости от типа проекта) создайте конечную точку js
<script>
window.applyStyleForBody = function(style) {
document.body.style[style.attrib] = style.value;
}
</script>
b. В бритвенном файле:
@Inject IJRRuntime JSRuntime
(...)
@code {
async Task MyMethod() {
await JSRuntime.InvokeAsync("applyStyleForBody",
new { attrib = "overflowY", value = "hidden" });
}
}