gpt4 book ai didi

asp.net-mvc - 不能使用以 "name"结尾的数据属性?

转载 作者:行者123 更新时间:2023-12-04 15:45:38 24 4
gpt4 key购买 nike

我很清楚您对带有连字符的数据属性使用下划线(对象中的“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,它们要求在某些输入上使用“数据加密名称”属性,因此我们不能只选择另一个属性名称。)

最佳答案

感谢 Tommy 测试我描述的行为并发现它不是每个人的错误。

Tommy 写完这篇文章后,我查看了我们正在使用的 Helper。我意识到我们实际上使用了一个名为“NameLessTextBoxFor”的扩展方法(我们在这里找到: How to extend html.textboxfor to remove the name attribute? ),它删除了 name=""在显示之前输入的属性。我应该在发布之前确认这一点,但没有意识到它会影响传递给它的 HTML 属性。

瞧,正如您所料,此方法的功能还切断了包含 name="" 的任何属性。 .它正在对该文本进行非常简单的搜索和替换,然后将其删除。所以这就是这里的问题。

感谢您对这个问题的时间和关注,并道歉我自己没有发现这个问题。

关于asp.net-mvc - 不能使用以 "name"结尾的数据属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16018722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com