作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试清理 MarkupString 的内容。实际上我创建了这个(基于 https://github.com/dotnet/aspnetcore/blob/574be0d22c1678ed5f6db990aec78b4db587b267/src/Components/Components/src/MarkupString.cs)
public struct MarkupStringSanitized
{
public MarkupStringSanitized(string value)
{
Value = value.Sanitize();
}
public string Value { get; }
public static explicit operator MarkupStringSanitized(string value) => new MarkupStringSanitized(value);
public override string ToString() => Value ?? string.Empty;
}
@((MarkupStringSanitized)"Sanitize this content")
最佳答案
一些建议(不一定适用于 OP,但适用于希望解决问题的其他任何人):
Sanitize()
方法应遵循 immutability
的模式在这种情况下 Gans.XSS.HtmlSanitizer
这是一个活跃的图书馆,并定期更新。 MarkupStringSanitized
.仅仅因为您输入了相同的 sanitizer 版本
struct
并不意味着它可以渲染它。为了让这个渲染,你需要把它转换成它知道的东西,
MarkupString
HtmlSanitizedMarkup
时发生的情况无需修改,直接使用。
@((MarkupStringSanitized)Content)
public struct MarkupStringSanitized
{
public MarkupStringSanitized(string value)
{
Value = Sanitize(value);
}
public string Value { get; }
public static explicit operator MarkupStringSanitized(string value) => new MarkupStringSanitized(value);
public static explicit operator MarkupString(MarkupStringSanitized value) => new MarkupString(value.Value);
public override string ToString() => Value ?? string.Empty;
private static string Sanitize(string value) {
var sanitizer = new HtmlSanitizer();
return sanitizer.Sanitize(value);
}
}
@if (Content == null)
{
<span>Loading...</span>
}
else
{
@((MarkupString)(MarkupStringSanitized)Content)
}
@code {
[Parameter] public string Content { get; set; }
}
MarkupString
与扩展方法。它看起来好一点,但只是一点点。
public static class MarkupStringExtensions
{
public static MarkupString Sanitize(this MarkupString markupString)
{
return new MarkupString(SanitizeInput(markupString.Value));
}
private static string SanitizeInput(string value)
{
var sanitizer = new HtmlSanitizer();
return sanitizer.Sanitize(value);
}
}
@if (Content == null)
{
<span>Loading...</span>
}
else
{
@(((MarkupString)Content).Sanitize())
}
@code {
[Parameter] public string Content { get; set; }
}
关于asp.net-core - Blazor 清理 MarkupString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60786935/
我有这个我希望能工作的代码,但 MarkupString 关闭了不应该关闭的标签: @((MarkupString)startMarkup) int count = 0; foreach (in
我正在尝试清理 MarkupString 的内容。实际上我创建了这个(基于 https://github.com/dotnet/aspnetcore/blob/574be0d22c1678ed5f6d
我是一名优秀的程序员,十分优秀!