连接字符串时,剃刀不接受空格作为第一个字符吗?

Posted

技术标签:

【中文标题】连接字符串时,剃刀不接受空格作为第一个字符吗?【英文标题】: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("01",(Model.Child?.Name ?? "DefaultName"), " SomeExtraText"))>

但结果是一样的。

这是什么原因?

【问题讨论】:

【参考方案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 文本。 现在一切都清楚了。再次感谢。

以上是关于连接字符串时,剃刀不接受空格作为第一个字符吗?的主要内容,如果未能解决你的问题,请参考以下文章

Java字符串拆分和字符串连接

作为服务运行时,Windows 不接受套接字连接

括号配对

在剃刀视图引擎中转义@字符

当服务器接受 TCP 连接时端口会改变吗?

如何使用 java 正则表达式验证字符串?