【问题标题】:Html.DisplayFor adds text in quotes?Html.DisplayFor 在引号中添加文本?
【发布时间】:2017-09-09 17:03:35
【问题描述】:

如果我添加一些这样的代码:

<div>
    @Html.DisplayFor(x => x.SomeTextField)
</div>

...它是这样渲染的...

<div>
    "
    SomeTextFieldsValue
    "
</div>

这很奇怪,因为它没有像我预期的那样使用标签……比如说标签标签。

在 html 中使用双引号有什么用。是标签的简写吗?

通过谷歌搜索很难找到答案。


我刚才问过这个问题,它很快就被标记为这个线程之前回答过的(作者:Richard Everett、Reniuz、Soner Gönül):

What is the @Html.DisplayFor syntax for?

请在再次执行相同操作之前阅读我的问题,您会发现这根本不是同一个问题?

【问题讨论】:

  • 你的项目中有展示模板吗?另外,请删除您问题的最后一部分,它与您的问题无关。
  • 链接的问题解释了如何自定义Html.DisplayFor 的输出,这几乎是您想要的。如果您的项目中没有字符串的显示模板,那么您的数据很可能包含“”
  • 问题不一样,但你读过DisplayTemplates
  • 我从来没有遇到过 DisplayFor 的问题;您可以发布 SomeTextField 的属性和属性吗?你也有这个的自定义显示模板吗?你能发布那个标记吗?
  • @Beakie 看起来截图中的引号是由 chrome 开发者工具插入的,它们实际上并不是 HTML 的一部分。使用查看源代码或只查看页面而不是使用 DOM 检查器,您会发现它们实际上并不存在,如果它们会显示在正常的浏览器视图中。

标签: c# asp.net asp.net-mvc


【解决方案1】:

DisplayFor 用于string 的默认显示模板不会在生成的 HTML 中添加双引号。

所以我看到了两种可能性:

  • SomeTextField 的值包含那些双引号
  • 您的项目中有一个自定义的 DisplayTemplate,用于添加它们的 SomeTextField(我假设为 string)类型

【讨论】:

  • 它既不包含双引号,也没有这样的显示模板。如果我使用 ValueFor,我会得到相同的输出。这些引号只是 html,不会显示在页面渲染中。
  • @Beakie 你能用@Html.Raw(Model.SomeTextField) 看看生成了什么HTML吗?
  • 我得到完全相同的输出。如果我这样做 @Model.MyField.Trim() 我也会得到相同的输出。有人可以发布他们自己的字符串渲染输出,以便我可以看到它是不同的吗?
【解决方案2】:

它实际上是一个镀铬的东西。 Chrome 只是显示文本存在的位置。

【讨论】:

    【解决方案3】:

    我认为您需要 LabelFor 而不是 DisplayFor。 DisplayFor 根据您要呈现的类型显示模板。

    【讨论】:

    • LabelFor 不会显示该属性的值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    • 2014-02-21
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多