Blazor绑定HTML到文本区域

3
这似乎很简单,但我找不到答案。在我的Blazor服务器端程序中,我有一个弹出式电子邮件表单,我预填文本,用户可以编辑它,然后单击发送来发送电子邮件。如果用户在文本区域中输入换行符,则会返回\n,这是可以接受的。但是,我无法向带有换行符的文本区域发送文本。在弹出式表单中,我有:
        <div class="form-group-sm">
            <label class="control-label">Message</label>
            <textarea rows="4" @bind="EmailMessage" class="form-control"></textarea>
        </div>

如果我发送
EmailMessage = "Test Email text \\nline two <br /> line 3";

我得到了: 在此输入图像描述 如果我发送
EmailMessage = Markdown.ToHtml("Test Email text \\nline two <br /> line 3");

我得到了以下文本:

我得到了enter image description here

是否可以向绑定到属性的文本区域发送换行符,以便用户可以编辑并将文本发送回程序?

理想情况下,这适用于任何HTML标记,但现在我只需要换行符。


2
为什么要使用反斜杠 \ 进行转义? - agua from mars
1个回答

6

这是基本的...你可以用许多方法进行扩充:

@page "/"

<div class="form-group-sm">
    <label class="control-label">Message</label>
    <textarea rows="4" value="@EmailMessage" @onchange="@((args) => EmailMessage = args.Value.ToString())" class="form-control"></textarea>
</div>

<button @onclick="@(()=>{})">Refresh</button>



@code {
    private string emailMessage = "Test Email text \r\nline two \r\n line 3";
    
    public string EmailMessage
    {
        get =>  emailMessage;
        set
        {
            if (emailMessage != value)
            {
                emailMessage = ((MarkupString)value).ToString();
            }
        }

    }
 
}

1
我一直在寻找一个可绑定的解决方案,表面上看这个不是。然而,深入研究后发现它本质上是在进行类似于 Blazor 绑定的操作,并且最重要的是它有效果。谢谢!ASP.NET Core Blazor 数据绑定 - azpc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接