【问题标题】:Doesn't razor accept space as the first character when concat strings?连接字符串时,剃刀不接受空格作为第一个字符吗?
【发布时间】:2022-01-14 17:12:07
【问题描述】:

我在 .NET6 应用程序的 razor 视图中有以下元素:

<input type="number" placeholder=@((Model.Child?.Name ?? "DefaultName") + " SomeExtraText")>

Name 属性不为空时的预期输出是:“Name SomeExtraText”。但是我只得到 "Name" 作为输出。

当我将 " SomeExtraText" 更改为 "-SomeExtraText" 时,我得到的输出为 "Name-SomeExtraText"

我也尝试使用 String.Format 如下:

<input type="number" placeholder=@(String.Format("{0}{1}",(Model.Child?.Name ?? "DefaultName"), " SomeExtraText"))>

但结果是一样的。

这是什么原因?

【问题讨论】:

    标签: c# asp.net-core razor razor-pages .net-6.0


    【解决方案1】:

    添加额外的引号:

    <input type="number" placeholder="@((Model.Child?.Name ?? "DefaultName") + " SomeExtraText")">
    

    【讨论】:

    • 感谢您的回答。你能解释一下吗?
    • @EmreUtkuSolak:不客气!我是按照定义来做的:HTML placeholder Attribute顺便说一句,有时查看生成的 HTML(例如在浏览器中查看页面源代码)有助于理解问题。
    • 我还是有点困惑。不是字符串+字符串=字符串???所以当我做“a”+“b”时,结果是“ab”,但是当我做“a”+“b”时,结果是“a”而不是“ab”。是不是有点奇怪。
    • @EmreUtkuSolak:如您所知,cshtml 由 MVC 处理并编译为 HTML,然后像往常一样传递给客户端。当您的表达式不带引号时,编译后您将拥有&lt;input type="number" placeholder=DefaultName SomeExtraText&gt;,而placeholder 将仅显示DefaultName 文本。如果您将表达式放在引号内,则将生成 &lt;input type="number" placeholder="DefaultName SomeExtraText"&gt;,而 placeholder 将显示 DefaultName SomeExtraText 文本。
    • 现在一切都清楚了。再次感谢。
    猜你喜欢
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多