- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我写了一个 HtmlHelper 扩展方法,它读取 CSS 文件的内容并将其包装到一个 <style>
中。标签:
public static IHtmlString EmbedCss(this HtmlHelper htmlHelper, string cssFile)
{
var httpContext = htmlHelper.ViewContext.RequestContext.HttpContext;
var physicalCssFileName = httpContext.Server.MapPath(cssFile);
if (!File.Exists(physicalCssFileName))
{
throw new FileNotFoundException(
string.Format("Requested CSS file \"{0}\" is not found",
physicalCssFileName));
}
var css = File.ReadAllText(physicalCssFileName);
var tb = new TagBuilder("style");
tb.Attributes["type"] = "text/css";
tb.SetInnerText(css.TrimStart(' ').TrimEnd(' '));
return MvcHtmlString.Create(tb.ToString());
}
然后我在 View 中调用这个方法:
@Html.EmbedCss("~/assets/css/critical.css")
CSS 文件中的引号和双引号字符被编码为 '
和 "
分别。
如果我用以下代码替换扩展方法的调用,则输出中的引号字符不会被编码:
<style>
@Html.Raw(File.ReadAllText(Server.MapPath(("~/assets/css/critical.css"))))
</style>
谁能解释为什么我的扩展方法会转义输出?
最佳答案
您正在使用 TagBuilder.SetInnerText()
,它对输入进行 html 编码:
Sets the InnerHtml property of the element to an HTML-encoded version of the specified string.
只需将字符串分配给 TagBuilder.InnerHtml
直接按原样设置文本:
Gets or sets the inner HTML value for the element.
Remarks
To HTML-encode a string before setting the InnerHtml property to the string, use the SetInnerText(String) method.
关于c# - 为什么我的 MvcHtmlString 内容被转义了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29470199/
我正在尝试使用 MvcHtmlString.Create 创建 JavaScript 变量。但是输出仍在编码中。 var geocode_jsonresult = @MvcHtmlString.Cre
我已经创建了自己的 Html Helper,它将红色星号添加到任何必填字段。 它成功地与两者一起工作 @Html.myLabelFor(model => model.Description) //an
我写了一个 HtmlHelper 扩展方法,它读取 CSS 文件的内容并将其包装到一个 中。标签: public static IHtmlString EmbedCss(this HtmlHelpe
documentation对于 MvcHtmlString 并不是很有启发性: Represents an HTML-encoded string that should not be encoded
我有一个看起来像这样的字符串:Foo's Bazz 我正在使用自定义 HtmlHelper 在 div 元素内呈现此文本: public static MvcHtmlString DisplayWit
我在我的项目中派生了 mvc4 MultiSelectList 类来实现 ToMvcHtmlString 方法。如何从我的 MultiSelectList 实例中获取纯 html? public Mv
我正在编写一个生成 JavaScript 代码并发送 Razor View 的方法。但是 razor view 根据其 head 对其进行编码。代码如下。 这是我的方法体,返回一个 mvchtmlst
我正在查看 MvcHtmlString 及其基类 HtmlString 的源代码,它们似乎都是字符串的无用包装器。 我记得有一次我做过这个练习并看到了好处,但现在想不起来了。当时我花了很多时间研究 M
我将 MvcHtmlString 作为我 View 的模型。我需要将此字符串呈现为 HTML。目前我尝试这样做: @Model.ToHtmlString() 但它在我的页面上给了我纯文字。我知道这应该
我从MVC 1到MVC 2 converted my project,Visual Studio 2008给我以下错误: Error 1 'System.Web.Mvc.MvcHtmlStri
HtmlString 与 MvcHtmlString 这两者之间有什么区别,或者什么时候更喜欢其中一个? 编辑: 与 HtmlString 相比,MvcHtmlString 更受青睐的是 MvcHtm
与此相关question我在 ASP.NET MVC 项目中遇到了 XSS 问题,并且对 MvcHtmlSTRing.ToHtmlString() 方法感到困惑。来自 documentation “返
我想更改 DisplayFor 输出(格式化字符串),但输出字符串有一个 & 符号。如何处理 MvcHtmlString 以不转义 & 符号? 这是 cshtml 文件中的代码: @{ str
我正在尝试使用出色的 PagedList.Mvc Visual Studio 2015 RC 中的分页库,但从我的角度来看我得到了这个异常: The type 'MvcHtmlString' is d
我有一个包含 MvcHtmlString 类型变量的页面类。 using System; using System.Collections.Generic; using System.Linq; us
我一定是漏掉了什么,因为this doc 说,MvcHtmlString.Create("someStringHere")返回 html 编码的字符串,但如果我有类似 MvcHtmlString.Cr
是否可以将 css 类注入(inject)到封装在 MvcHtmlString 中的 HTML 元素中? ? 作为我正在构建的框架的一部分,我的任务是为表单元素(TextBox、TextBoxFor<
由于在 MSDN 中找到了此信息,我对如何连接 MvcHtmlString 实例有一些疑问。 : MvcHtmlString Class Represents an HTML-encoded stri
我刚开始使用 RazorEngine,但在使用静态辅助方法时遇到了麻烦。它只是为模板生成一个 MvcHtmlString/IHtmlString。当调用 Razor.Parse(...) 我得到 Ra
我正在将 ASP.NET MVC 应用程序转换为 ASP.NET MVC 2 4.0,并收到此错误: Operator '+' cannot be applied to operands of typ
我是一名优秀的程序员,十分优秀!