首页 > 解决方案 > 如何不对asp.net核心中的整个字符串进行编码

问题描述

我正在尝试打印文本并将所有“\r\n”替换为“<br/>”,但输出返回“<br/>”。那么如何不对文本进行编码,而不是对“<br/>”部分进行编码呢?

我可以使用@Html.Raw,但我不想对每个文本都这样做。

本地化访问器:

public string this[string name, bool global = false] 
{ 
    get
    {
        ILocalizationValue result = default;

        if (global) 
        {
            result = GetAsync(null, name).Result;
        }
        else
        {
            result = GetAsync(name).Result;
        }

        return result.HtmlValue.Replace("\r\n", "<br/>");
    }
}

HtmlValue 是 HtmlString.Value

看法:

@_local["ParNewSite"]

Html : prosessen smertefri og rask.<br/><br/>Alle har

标签: c#asp.net-core

解决方案


我强烈建议将字符串视为纯文本或 html 编码文本。您已经创建了一个部分是 html 编码('<br/>')和部分纯文本的字符串。这不能以真正可靠的方式工作。(如果你得到 '<br/>' 作为用户输入呢?)。

解决方案:就地进行所有转换:

var html = HttpUtility.HtmlEncode(plainTextMultiLineString).Replace("\r\n", "<br/>");

请参阅:https ://docs.microsoft.com/en-us/dotnet/api/system.web.httputility.htmlencode?view=net-5.0


推荐阅读