![](/img/trans.png)
[英]How to make multiline text for messages in ListView with Winform C#?
[英]How to make a HTML text multiline using a C# bind in a blazor project?
我有一个带有客户端 Razor 页面的Blazor
项目。 在该页面上,我想显示多行文本,例如:
找不到系列
错误信息
但是文本是在使用@bind
的 C# 字符串中找到的。
我尝试使用普通的\n
来换行。 它确实知道它是命令,但它在文本中放置了一个“空格”而不是换行。
我也尝试在文本中写<br />
,但它只是在文本中写了。
我的 razor 页面:
<p>@resultString</p>
@code {
string resultString = "Series not found \nError message";
}
使用代码片段中的输入,我希望得到以下 output:
找不到系列
错误信息
我能想到的唯一方法是使用 Razor 模板。 \r\n、Envirnoment.Newline 和其他任何东西都不能让编译器让步。
这是使用 Razor 模板的工作解决方案:
<p>@resultString</p>
@code {
RenderFragment resultString = @<p>Series not found <br />Error message</p>;
}
更新:你也可以使用这个:
MarkupString resultString = (MarkupString) $"Series not found <br />Error message";
更新 2:来自文件:
渲染原始 HTML Blazor 通常使用 DOM 文本节点渲染字符串,这意味着它们可能包含的任何标记都将被忽略并视为文字文本。 这个新功能允许您渲染特殊的 MarkupString 值,这些值将被解析为 HTML 或 SVG,然后插入到 DOM 中。
警告:渲染从任何不受信任的来源构造的原始 HTML 是一个重大的安全风险!
使用 MarkupString 类型添加 static HTML 内容块。
@((MarkupString)myMarkup)
@functions {
string myMarkup = "<p class='markup'>This is a <em>markup string</em>.</p>";
}
希望这可以帮助...
您始终可以使用 go 的简单方法:拆分和循环
@foreach (var line in resultString.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries))
{
<p>@line</p>
}
@code {
public string resultString => "Series not found \nError message";
}
使用MarkupString
时,确保行正确编码很重要。 确保这一点的一种简单方法是使用以下辅助方法:
public static class HtmlHelper
{
public static MarkupString RenderMultiline(string textWithLineBreaks)
{
var encodedLines = (textWithLineBreaks ?? string.Empty)
.Split(new char[] { '\r', '\n' })
.Select(line => HttpUtility.HtmlEncode(line))
.ToArray();
return (MarkupString)string.Join("<br />", encodedLines);
}
}
用法:
<div>
@HtmlHelper.RenderMultiline($"This text goes over\nmultiple lines\neven with {userinput}");
</div>
<label title="msg" class="col-form-label fw-bold fs--1">@((MarkupString)Msg) </label>
@code{
string Msg = "Password is not <b>strong</b> enough!";
}
在 razor 中使用 ( MarkupString
) 在字符串中显示 html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.