asp.net mvc를 사용하여 하이픈으로 연결된 HTML 속성


111

다음을 사용하는 대신 하이픈 속성이있는 요소를 만들 때 더 좋은 구문이 있습니까?

<%= Html.TextBox ("name", value, new Dictionary<string, object> { {"data-foo", "bar"} }) %>

제안 된 표준 HTML 5 및 WIA ARIA 에 대한 HTML 사양을 살펴보면 HTML 속성의 하이픈이 일종의 단순한 이름 간격으로 더 일반적으로 사용될 계획 인 것 같습니다.

예를 들어 HTML 5는 사용자 지정 속성에 접두사가 붙는 것을 제안 data-하고 WIA ARIA는 aria-모든 WIA ARIA 속성에 접두사를 사용 합니다.

ASP.NET MVC에서 HTML 도우미를 사용 <%= Html.TextBox("name", value, new { attribute = attributeValue }) %>하면 익명의 개체가 사전으로 변환됩니다.

불행히도 C #에서는 이름에 하이픈을 지원하지 않으므로 유일한 대안은 사전을 만드는 것입니다. 구문이 매우 장황하고 전체 확장을 다시 작성하지 않고도 ASP.NET MVC의 HTML 확장 기능을 변경하는 더 좋은 대안이나 간단한 방법을 본 사람이 있습니까?

답변:


202

데이터 속성 이름에 밑줄을 사용하면 마술처럼 처리하여 하이픈으로 변환합니다. 밑줄은 html 속성 이름에 유효하지 않으므로 밑줄 대신 하이픈을 원한다는 것을 알고 있습니다.

<%= Html.TextBox("name", value, new { @data_foo = "bar"}) %>

2
몇 가지 질문에서 비슷한 문제를 발견했으며 이것이 가장 좋은 대답입니다.
user2780436

설명 밑줄이 html 속성에서 유효하지 않은 이유를 추가해 주시겠습니까 ? html 4.01 이상 상태 : 속성 값에는 문자 (az 및 AZ), 숫자 (0-9), 하이픈 (ASCII 10 진수 45), 마침표 (ASCII 10 진수 46), 밑줄 (ASCII 10 진수 95) 및 콜론 ( ASCII 십진수 58) ,
surfmuggle

@threeFourOneSixOneThree 인용구는 속성 값을 참조하지만이 질문에서는 속성 이름을 참조합니다.
ED-209

@threeFourOneSixOneThree 내 대답의 끝을 'html 속성 이름에서 밑줄이 유효하지 않습니다'로 변경했습니다.
ED-209

19

ActionLink htmlAttributes에 제공된 답변 은 하이픈 대신 밑줄을 사용하도록 제안합니다. MVC.Net은 페이지를 브라우저로 보낼 때 밑줄 대신 하이픈을 내 보냅니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.