C# Html编码在Chrome中产生新行

C# Html编码在Chrome中产生新行,c#,asp.net,html,asp.net-mvc,html-encode,C#,Asp.net,Html,Asp.net Mvc,Html Encode,在我的注册表单中,我使用asp.net非侵入性验证来检查用户名是否存在。如果发现碰撞,我的JsonResult方法将返回以下内容: This is already in use. How about \u003cstrong\u003efoo123\u003c/strong\u003e? 我使用Microsoft的低调验证在我的视图中显示: @Html.ValidationMessageFor(m => m.Username) 这将导致其在页面源中显示如下: This is alrea

在我的注册表单中,我使用asp.net非侵入性验证来检查用户名是否存在。如果发现碰撞,我的JsonResult方法将返回以下内容:

This is already in use. How about \u003cstrong\u003efoo123\u003c/strong\u003e?
我使用Microsoft的低调验证在我的视图中显示:

@Html.ValidationMessageFor(m => m.Username)
这将导致其在页面源中显示如下:

This is already in use. How about
<strong>foo123</strong>
?
如您所见,文本分为三行。这在Firefox中不是问题,但在Chrome中,这些新行会导致显示的文本以类似于的方式中断。我相信编码应该对此负责——有人能解释为什么吗?这个问题有什么解决办法吗


提前谢谢。

如果它们在实际页面上显示为换行符,那么我要做的第一件事就是检查标记,看看是否有任何CSS将其定义为display:block;或重写空白属性


如果您关心DOM资源管理器的输出。。。这就是Chrome显示DOM树的方式。这三行分别是单独的节点、两个文本节点和一个元素节点,因此它们被视为相等。如果你检查我答案的第一段,你会看到同样的事情。

如果它们在实际页面上以换行符显示,那么我要做的第一件事就是检查标签,看看是否有CSS将其定义为display:block;或重写空白属性


如果您关心DOM资源管理器的输出。。。这就是Chrome显示DOM树的方式。这三行分别是单独的节点、两个文本节点和一个元素节点,因此它们被视为相等。如果您查看我答案的第一段,您将看到相同的内容。

如果您没有尝试过,您可以尝试将字符串中的换行符替换为。。。什么都没有

@Html.ValidationMessageFor(m => m.Username).ToString().Replace(Environment.NewLine, "");

感觉真的很奇怪,但这可能是问题所在,因为它只是在Chrome中,仔细检查CSS规则。或者只是将验证消息放在一个p标记中?

在没有尝试的情况下,您可以尝试将字符串中的换行符替换为。。。什么都没有

@Html.ValidationMessageFor(m => m.Username).ToString().Replace(Environment.NewLine, "");

感觉真的很奇怪,但这可能是问题所在,因为它只是在Chrome中,仔细检查CSS规则。或者只是将验证消息包围在一个p标签中?

尝试使用css进行调整

 \u003cdiv\u003e 
  This is already in use. How about \u003cstrong\u003efoo123\u003c/strong\u003e?
\u003c/div\u003e?

我认为这是由于一些填充问题。上传页面生成的Html代码

尝试使用css进行调整

 \u003cdiv\u003e 
  This is already in use. How about \u003cstrong\u003efoo123\u003c/strong\u003e?
\u003c/div\u003e?

我认为这是由于一些填充问题。上传页面生成的Html代码

你能提供如何将JSON推入HTML的代码吗?@usr我已经更新了我的问题,将其包括在内,但由于它是内置功能,我担心它没有多大用处。你能提供如何将JSON推入HTML的代码吗?@usr我已经更新了我的问题,将其包括在内,但由于它是内置功能,我担心它没有多大用处。