我很清楚您对带有连字符的数据属性使用下划线(对象中的“data_bind”而不是“data-bind”),它们会自动被连字符替换。但是我遇到了一个问题,如果属性以“name”结尾,你不能这样做下划线“hack”。所以我已经尝试了这两种方法,但都没有工作:
@Html.TextBoxFor(model => model.Street, new { data_encrypted_name = "street" })
@Html.TextBoxFor(model => model.Street, new { @data_encrypted_name = "street" })
当我查看生成的 HTML 时,对于上述两种情况,它都会生成:
<input data-encrypted- id="ViewModel_Street" name="ViewModel.Street" type="text" value="" />
起初,我认为这可能与多个下划线/连字符有关,但我又尝试了两个测试用例,看看会发生什么,它们都工作得很好:
@Html.TextBoxFor(model => model.Street, new { data_encrypted_namme = "street" })
@Html.TextBoxFor(model => model.Street, new { data_name_encrypted = "street" })
所以这个问题肯定与属性末尾有“名称”有关。
我做错了什么或遗漏了什么,或者这是.NET如何转换属性的错误?
(为了澄清,我们使用 Braintree Payments,它们要求在某些输入上使用“数据加密名称”属性,因此我们不能只选择另一个属性名称。)