2

在我的注册表单中,我使用 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 中,这些新行会导致显示的文本以与<br />. 我相信编码应该归咎于此 - 谁能解释为什么?这个问题有什么解决办法吗?

先感谢您。

4

3 回答 3

0

如果它们在实际页面上显示为带有换行符,那么我要做的第一件事就是检查<strong/>标签,看看是否有任何 CSS 将其定义为display:block;或覆盖white-space属性。

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

于 2012-04-07T19:26:03.020 回答
0

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

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

感觉真的很奇怪,这将是问题,因为它只是在 Chrome 中,请仔细检查 CSS 规则。或者只是将验证消息包含在 p-tag 中?

于 2012-04-07T19:29:10.320 回答
0

尝试使用 css 进行调整。

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

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

于 2014-03-19T06:22:25.687 回答