【问题标题】:Encode HTML via Razor Helper using Nancy-classes使用 Nancy 类通过 Razor Helper 编码 HTML
【发布时间】:2014-12-04 19:55:05
【问题描述】:

更新:在伪代码中添加 Nancy using 语句以反映非 ASP.NET 用法。

我目前正在做类似的事情:

using Nancy.Helpers;

// ...

public static IHtmlString DoSomething<T>(this HtmlHelpers<T> helper) {
    return new NonEncodedHtmlString(HttpUtility.HtmlEncode("..."));
}

用于编码 HTML。但是,将编码值传递给 NonEncodedHtmlString 类感觉不对,但我看不到任何其他类可以这样做。有没有我遗漏了一些南希特有的东西?

注意:我期待找到一个免费的 EncodedHtmlString 类,它接受一个字符串并返回其编码版本。

注意 2:没有特别的原因(此时仅是个人喜好),我试图避免使用 System.Web/System.Web.Mvc 来处理编码,而是完全依赖 Nancy-classes。

【问题讨论】:

  • 不确定您的示例中有什么“感觉不对” - 您能否提供有关代码的更具体问题...实际上您也可以使用 MvcHtmlString/HtmlString 或您的自定义字符串。
  • 更新了问题的措辞,以表达我对找到免费课程的期望。真的只是想确定我是否错过了文档中的某些内容。用于编码字符串。
  • 无论如何你都无法使用 System.Web/System.Web.Mvc 中的东西,因为这与 Nancy 中定义的 IHtmlString 接口不同(== 不兼容的类型)跨度>

标签: c# razor nancy


【解决方案1】:

在南希:

NonEncodedHtmlString 类不会在实例化时对参数进行编码。

EncodedHtmlString 类将在实例化时对参数进行编码。

我同意你的看法,感觉有点不对劲。

here:

    public EncodedHtmlString(string value)
    {
        this.encodedValue = HttpUtility.HtmlEncode(value);
    }


    public NonEncodedHtmlString(string value)
    {
        this.value = value;
    }

此外,您尽量避免使用 System.Web 是合理的,因为 Nancy 以 .Net 客户端配置文件为目标,如果您也想以它为目标。

有些人可能会争辩

从 .NET Framework 4.5 开始,客户端配置文件已经 已停产,只有完整的可再发行包可用。

但是,NET vNext Framework 会抛弃System.Web...如果微软自己不使用System.Web,为什么还要使用它?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-04
    • 2019-12-31
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多