Dobrze wiem, że używasz podkreśleń dla atrybutów danych z myślnikami ("data_bind" zamiast "data-bind", w obiekcie), a oni automatycznie otrzymują zastąpienie myślnikami. Ale natknąłem się na problem, w którym nie można zrobić tego podkreślenia "hack", jeśli atrybut kończy się na "imię". Więc próbowałem zarówno z nich, ale żadna praca:Nie można użyć atrybutu danych, który kończy się na "nazwa"?
@Html.TextBoxFor(model => model.Street, new { data_encrypted_name = "street" })
@Html.TextBoxFor(model => model.Street, new { @data_encrypted_name = "street" })
Kiedy przeglądam HTML, który jest generowany dla obu powyższych przypadkach, generuje:
<input data-encrypted- id="ViewModel_Street" name="ViewModel.Street" type="text" value="" />
Na początku myślałem, że to może mieć coś do czynienia z wieloma podkreślenia/myślnikami, ale próbowałem dwa kolejne przypadki testowe, aby zobaczyć, co by się stało, i oboje pracowali w porządku:
@Html.TextBoxFor(model => model.Street, new { data_encrypted_namme = "street" })
@Html.TextBoxFor(model => model.Street, new { data_name_encrypted = "street" })
więc ten problem jest na pewno związane z konieczności „nazwa "na końcu atrybutu.
Czy robię coś złego lub czegoś brakuje, czy jest to błąd w jaki sposób .NET konwertuje atrybuty?
(Dla wyjaśnienia, używamy Braintree Płatności i wymagają korzystania z „nazwa-zaszyfrowanych danych atrybutu” na pewnych nakładów, więc nie możemy po prostu wybrać inną nazwę atrybutu.)
Ponieważ "nazwa" jest prawidłowym atrybutem HTML, może to powodować problemy ..? – tier1
Hmm, cóż, zgodnie z tym pomysłem wypróbowałem data_encrypted_id i data_encrypted_class, ale obie zadziałały zgodnie z oczekiwaniami. Więc nadal wydaje się być bezpośrednio związane z "nazwa" na końcu. Dzięki za tę myśl! –
Tak jak FYI, nie jestem w stanie potwierdzić tego zachowania, VS2012, MVC4, plik cshtml na pomocnika Html.TextboxFor. @ Html.TextBoxFor (x => x.TrapNumber, new {data_encrypted_name = "Test"}) renderuje się odpowiednio dla mnie. . Przetestowane również na TextArea bez problemu. Wiem, że to nie dotyczy twojego zachowania, ale chciałem dać wgląd w to, że nie wydaje mi się to ramowym "błędem" ... – Tommy