【问题标题】:@Html.TextBoxFor throws System.FormatException when the localized string contains curly brace character当本地化字符串包含大括号字符时,@Html.TextBoxFor 抛出 System.FormatException
【发布时间】: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


【解决方案1】:

在您的视图中包含HtmlEncode(),例如

@Html.TextBoxFor(model => Server.HtmlEncode(model.MyProperty))

【讨论】:

    猜你喜欢
    • 2017-08-04
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多