带重音字母的 C# Mvc resx 转义问题
C# Mvc resx escape issue with accented letters
我在 Web 项目中使用资源文件,有时我会使用 html 编码的重音字母和撇号。
所以不用这个
Errore: non c'è nessun itemKey definito. L'esecuzione della pagina verrà interrotta..
我看到了这个
Errore: non c'è nessun itemKey definito. L'esecuzione della pagina verrà interrotta..
我知道 Html.Raw()
可以解决这个问题,但我想知道是否可以在 web 配置中设置一些选项来跳过默认转义?否则我将被迫在所有地方添加 Html.Raw()
我这样添加资源:
@(WmXRexManager.WebResxManager.GetString<SharedVerificationResx>(
() => SharedVerificationResx.ErrorNoItemKey));
WebResxManager
和 GetString<T>()
方法无关,因为在调试时正确检索资源字符串。
它没有明确说明这一点,但我想知道字符串被转义的上下文。
如果您将此表达式用作常规 HTML 内容,则转换是正确的。 (不过你不需要结束分号)
我的猜测是(假设错误消息是使用一些JS错误处理输出的)你在JavaScript中渲染字符串,你需要区分HTML编码和JavaScript-编码,因为它们在某些情况下不同。
我使用 HtmlHelper 扩展方法
public static IHtmlString JsString<TModel>(this HtmlHelper<TModel> html, string s)
{
return html.Raw(HttpUtility.JavaScriptStringEncode(s));
}
允许简单地编写 @Html.JSString(stringValue)
并转义 JavaScript 字符串(当然在 JS 字符串引号内)。
我在 Web 项目中使用资源文件,有时我会使用 html 编码的重音字母和撇号。
所以不用这个
Errore: non c'è nessun itemKey definito. L'esecuzione della pagina verrà interrotta..
我看到了这个
Errore: non c'è nessun itemKey definito. L'esecuzione della pagina verrà interrotta..
我知道 Html.Raw()
可以解决这个问题,但我想知道是否可以在 web 配置中设置一些选项来跳过默认转义?否则我将被迫在所有地方添加 Html.Raw()
我这样添加资源:
@(WmXRexManager.WebResxManager.GetString<SharedVerificationResx>(
() => SharedVerificationResx.ErrorNoItemKey));
WebResxManager
和 GetString<T>()
方法无关,因为在调试时正确检索资源字符串。
它没有明确说明这一点,但我想知道字符串被转义的上下文。
如果您将此表达式用作常规 HTML 内容,则转换是正确的。 (不过你不需要结束分号)
我的猜测是(假设错误消息是使用一些JS错误处理输出的)你在JavaScript中渲染字符串,你需要区分HTML编码和JavaScript-编码,因为它们在某些情况下不同。
我使用 HtmlHelper 扩展方法
public static IHtmlString JsString<TModel>(this HtmlHelper<TModel> html, string s)
{
return html.Raw(HttpUtility.JavaScriptStringEncode(s));
}
允许简单地编写 @Html.JSString(stringValue)
并转义 JavaScript 字符串(当然在 JS 字符串引号内)。