【问题标题】:Blazor bind html to textareaBlazor 将 html 绑定到 textarea
【发布时间】:2020-11-17 09:05:12
【问题描述】:

这看起来很简单,但我一直无法找到答案。在我的 Blazor 服务器端程序中,我有一个弹出式电子邮件表单,我预先填充了文本,然后用户可以对其进行编辑并单击发送以使程序发送电子邮件。如果用户在 textarea 中输入换行符,他们会以 \n 的形式返回,这很好。但是,我无法通过换行符将文本发送到 textarea。

在我的弹出表单中:

        <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");

我明白了

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

理想情况下,这适用于任何 html 标记,但现在我将满足于换行。

【问题讨论】:

  • 你为什么要逃避\?

标签: html textarea bind blazor


【解决方案1】:

这是基本的...您可以通过多种方式对其进行扩充:

@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();
            }
        }

    }
 
}

【讨论】:

  • 我一直在寻找一个有约束力的解决方案,但从表面上看并非如此。然而,深入研究它本质上是在做 Blazor 在绑定下所做的事情,而且最重要的是它可以工作。谢谢! ASP.NET Core Blazor data binding
猜你喜欢
  • 2018-08-19
  • 2018-06-11
  • 2021-07-23
  • 2018-09-05
  • 2020-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多