加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 03:48:46 所属栏目:asp.Net 来源:网络整理
导读:我很清楚你使用带有连字符的数据属性的下划线(对象中的“data_bind”而不是“data-bind”),它们会自动被连字符替换.但是如果属性以“name”结尾,我遇到了你不能做这个下划线“hack”的问题.所以我尝试了这两个,但都没有工作: @Html.TextBoxFor(model = mode
我很清楚你使用带有连字符的数据属性的下划线(对象中的“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付款,他们要求在某些输入上使用“data-encrypted-name”属性,因此我们不能只选择其他属性名称.)

解决方法

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

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

并且,正如您可能期望的那样,此方法的功能也切断了包含name =“”的任何属性.它正在进行一个非常简单的搜索并替换该文本并将其删除.这就是问题所在.

感谢您的时间和对这个问题的关注并道歉我自己没有抓住这个.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读