【问题标题】:Razor code EditorFor showing '�' as default?Razor 代码编辑器默认显示“�”?
【发布时间】:2020-04-21 09:08:22
【问题描述】:

在我的表单中,有一个文本框,在剃须刀代码中使用 EditorFor,为此给出的类型是 Char。 但它总是默认显示一个“...”,这是什么意思?这是因为 char 类型吗?

请看图

【问题讨论】:

  • 它的值为'�'
  • 那么这个价值从何而来?你从数据库中加载它吗?我建议在调试器中观看它。包括源代码的相关部分,以便这里的人可能能够弄清楚。如果将数据类型临时更改为System.String,问题会消失吗?相关:stackoverflow.com/q/15276191/1132334
  • @CeeMcSharpface 如果该字段有值,那么它工作正常,如果它没有值,即新打开的表单,那么它显示这个符号。也许是因为我不知道正确的char类型。
  • char 数据类型的默认值为 '\0' (U+0000) - 看起来它已被您看到的无效 unicode 代码点字形取代。而是分配一个空格 (' ')。或者质疑用 char 表示数量类型的设计决策,将其设为字符串。相关:stackoverflow.com/q/43662939/1132334
  • @CeeMcSharpface 好的,谢谢,让我试试

标签: c# asp.net razor


【解决方案1】:

这是无效的 unicode 代码点字形。这是您在大多数浏览器中遇到空字符“\0”(U+0000)时会看到的内容。 这恰好是 .NET char 数据类型的默认值。

三种解决方法:

  1. 用有效字符替换默认值,例如空格:c == default(char) ? ' ' : c
  2. 添加逻辑以在值为default(char) 时隐藏EditorForLabelFor
  3. 将数据类型更改为System.String,这会导致nullString.Empty 两种情况下的正确再现

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多