Blazor 使用Javascript编辑DOM

Blazor 使用Javascript编辑DOM,blazor,Blazor,我正在使用MathQuill在页面上渲染latex,但这与渲染树相冲突 blazor正在调用Javascript: RenderQuizInterface: function () { MQ.StaticMath(document.getElementById("quizQuestion")) for (var ele of document.getElementsByClassName("quiz-button-latex")) {

我正在使用MathQuill在页面上渲染latex,但这与渲染树相冲突

blazor正在调用Javascript:

RenderQuizInterface: function () {

    MQ.StaticMath(document.getElementById("quizQuestion"))
    for (var ele of document.getElementsByClassName("quiz-button-latex")) {
        MQ.StaticMath(ele);
    }

},
Blazor页面:

@page "/quiz"
@inject IJSRuntime JsRuntime;
@using Boolean_Algebra.Components.Quiz;
<h1 class="text-center main-web-width" id="title">Quiz</h1>

<QuizInterface manager="manager"/>


@code { 

public QuizManager manager;

protected override void OnInitialized()
{
    AssignManager();
}

private void AssignManager() {
    manager = new QuizManager();
    manager.onAnswer += (s,e)=> {
        AssignManager();

        this.StateHasChanged();

    };
}

protected override void OnAfterRender(bool firstRender)
{
    JsRuntime.InvokeVoidAsync("JsFunc.RenderQuizInterface");
}
}
@page”/quick
@注入IJSRuntime JsRuntime;
@使用布尔代数。组件。测验;
测验
@代码{
公共QuizManager经理;
受保护的覆盖无效OnInitialized()
{
分配经理();
}
私人经理(){
manager=新的QuizManager();
manager.onAnswer+=(s,e)=>{
分配经理();
此.StateHasChanged();
};
}
受保护的覆盖无效OnAfterRender(布尔firstRender)
{
JsRuntime.InvokeVoidAsync(“JsFunc.RenderQuizInterface”);
}
}
目前,它呈现乳胶,但在调用my onAnswer事件时,它不会用新问题替换旧乳胶。
这可以在没有JsRuntime调用的情况下工作,但它将在页面上显示原始latex,而不是格式化的latex。有没有合适的方法可以在不破坏rendertree的情况下执行此操作?

我在reddit上收到了此评论

方法是渲染Blazor不会试图保留的输出 跟踪。诀窍是为容器呈现标记,而不是 在剃刀上宣布

@((MarkupString)$“{ContentToTransform}”)

看看这是否有效

解决了我描述的问题