Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当字符串的值更改时,Blazor使用MarkupString呈现HTML不会刷新它_Blazor_Blazor Server Side - Fatal编程技术网

当字符串的值更改时,Blazor使用MarkupString呈现HTML不会刷新它

当字符串的值更改时,Blazor使用MarkupString呈现HTML不会刷新它,blazor,blazor-server-side,Blazor,Blazor Server Side,因此,我使用解决方案示例#2介绍如何在Blazor中正确呈现HTML,同时对其进行清理 基本上,我试图制作一个框,在编辑标准标记和将其呈现为HTML之间切换。我使用Markdig包将标准标记字符串转换为HTML 但我遇到的问题是,每当renderedHTML更新时,markupstringsanitized组件仍然保持不变。事实上,它始终与renderedHTML初始化时保持相同,不会得到更新。也许我做了数据绑定错误 下面是我如何使用editBox.razor <div> @

因此,我使用解决方案示例#2介绍如何在Blazor中正确呈现HTML,同时对其进行清理

基本上,我试图制作一个框,在编辑标准标记和将其呈现为HTML之间切换。我使用Markdig包将标准标记字符串转换为HTML

但我遇到的问题是,每当
renderedHTML
更新时,
markupstringsanitized组件仍然保持不变。事实上,它始终与
renderedHTML
初始化时保持相同,不会得到更新。也许我做了数据绑定错误

下面是我如何使用
editBox.razor

<div>
    @if (editMode)
    {
        ...
        input box version
        ...
    }
    else
    {
        <div class="editing-input inputs" @ondblclick="SwitchModes">
           <MarkupStringSanitizedComponent Content="@renderedText"/>
        </div>
    }
</div>
...

@code{

    public string renderedText {get; set;} = "<p class='markup'>This is a <em>markup string</em>.</p>";

    private bool editMode = false;

    private async Task SwitchModes(MouseEventArgs e)
    {
        editMode = !editMode;
        await MarkUpToHTML();
    }

    private async Task MarkUpToHTML()
    {
        var pipeline = new MarkdownPipelineBuilder().UseAdvancedExtensions().Build();
        string renderedText = Markdown.ToHtml(Text, pipeline);
        Console.WriteLine("original text: \"" + Text + "\"");
        Console.WriteLine("rednered text: \"" + renderedText + "\"");
        await base.InvokeAsync(StateHasChanged);
    }
}

@如果(编辑模式)
{
...
输入框版本
...
}
其他的
{
}
...
@代码{
公共字符串renderedText{get;set;}=“

这是一个标记字符串。

”; private bool editMode=false; 专用异步任务切换模式(MouseEventArgs e) { editMode=!editMode; 等待标记HTML(); } 专用异步任务标记HTML() { var pipeline=new MarkdownPipelineBuilder().UseAdvancedExtensions().Build(); string renderedText=Markdown.ToHtml(文本,管道); Console.WriteLine(“原始文本:\”“+文本+\”); Console.WriteLine(“redneredtext:\”“+renderedText+\”); wait base.InvokeAsync(StateHasChanged); } }
您的代码有一个简单的故障:

在MarkUpToHTML方法中,您正在生成渲染输出,但没有将其分配给renderedText全局变量,而是在方法的作用域上重新声明了它,因此它的值永远不会到达您想要的地方

因此,只要改变一下:

string renderedText = Markdown.ToHtml(Text, pipeline);
用于:

试试看。祝你好运

renderedText = Markdown.ToHtml(Text, pipeline);