【发布时间】:2016-04-13 00:35:39
【问题描述】:
当本地化字符串包含大括号字符时,@Html.TextBoxFor 抛出 System.FormatException
public class MyModel
{
[Display(ResourceType = typeof(MyModelResourceProvider), Name="MyProperty")]
public string MyProperty { get; set; }
...
}
public class MyModelResourceProvider
{
public static string MyProperty
{
return GetLocalizedString("stringresourcekey");
}
}
GetLocalizedString 使用stringresourcekey 获取本地化字符串。本地化字符串可以包含大括号、哈希、撇号等字符。
我的 cshtml 使用 MyProperty 如下。
@Html.TextBoxFor(model => model.MyProperty, new { autocomplete = "off" })
当我在 Visual Studio 中运行我的 asp.net mvc 应用程序时,上面的行会抛出 System.FormatException。我知道这是由于花括号字符而发生的。但是我在哪里以及如何逃避它?如果我尝试通过用GetLocalizedString 中的双大括号替换大括号来逃避,则 Html 会呈现双大括号而不是单大括号。
更新 1
我想要的是,由于我在 GetLocalizedString 方法(即在 C# 中)中使用双花括号转义了大括号,因此我想在 HTML 中显示单个大括号而不是双大括号。
【问题讨论】:
-
您可能需要HTMLEncode 字符串才能在视图中使用它
-
@Liam 我尝试使用 WebUtility.HtmlEncode(GetLocalizedString("stringresourcekey")),但我得到了同样的错误。我在正确的地方做吗?
-
你试过用双花括号替换花括号吗?
-
@GeneR 是的,如果我用双大括号替换大括号,则不会引发异常,但是 Html 然后呈现双大括号而不是单大括号。
-
使用反斜杠转义大括号?
标签: c# asp.net-mvc string