我们的信用卡处理器(Braintree Payments)要求我们不要在信用卡字段(卡号、到期日期和 CCV)上使用“名称”属性,以确保它们不会以未加密的方式发布到服务器。我找到了一个自定义扩展来生成一个无名文本框(如何扩展 html.textboxfor 以删除名称属性?)。这很好用,因为它允许我们生成一个没有 name 属性的文本框,但它仍然会自动添加所有其他验证属性等。但是我遇到了一个问题。
当我@Html.NameLessTextBoxFor(model => model.CardNumber)
在我的视图中使用时,它会正确生成没有名称属性的文本框。我们还在视图模型中使用数据注释来生成不显眼的验证。实际网站上的明显问题是,当这些无名字段之一出现验证错误时,ValidationMessage 跨度不会显示任何错误消息。无名称字段正确变为红色,但不显示错误消息。
我相信我已经推断出为什么这不起作用,但我不知道如何解决它。我查看了为 ValidationMessage 跨度生成的 HTML,我看到了这个属性:
data-valmsg-for="MyViewModel.CardNumber"
如果我的无名字段的 name 属性设置正常,那将是正确的。但是由于我无法设置 name 属性,如何让 ValidationMessage 仍然有效?