MVC의 HTML 헬퍼가 생성 한 HTML 요소에 클래스 속성을 추가하려면 어떻게해야합니까?


188

ASP.NET MVC 예를 들어, HTML 도우미를 사용하여 HTML 요소를 생성 할 수 있습니다 @Html.ActionLink(), @Html.BeginForm()등등합니다.

익명 객체 를 생성하여 양식 속성을 지정할 수 있으며 요소에 대해 ( 이 경우 네 번째) htmlAttributes매개 변수 에 해당 객체를 전달할 수 있습니다 id.

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { id = "MyForm"})

그러나 class속성은 어떻습니까? 분명히 이것은 작동하지 않습니다.

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { class = "myclass"})

C # 키워드를 만난 후 다른 것을 기대하기 때문에 뷰가 요청되면 임의의 구문 오류가 발생합니다 class.

나는 또한 시도했다 :

new { _class = "myclass"}

new { class_ = "myclass"}

그러나 밑줄이 대시로 바뀌어도 작동하지 않았습니다 .

HTML 요소를 직접 작성하거나 양식을 랩 안에 <div class="myClass">넣을 수 있다는 것을 알고 있지만 여전히 수행 방법을 알고 싶습니다.

답변:


348

C #에서 예약 키워드 를 이름 으로하는 속성을 사용하여 익명 형식 (또는 모든 형식)을 만들려면 속성 이름 앞에 at 기호를 추가 할 수 있습니다 @.

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { @class = "myclass"})

VB.NET의 경우이 구문은 도트를 사용하여 수행 .되며, 해당 언어에서 모든 익명 유형의 기본 구문입니다 .

Html.BeginForm("Foo", "Bar", FormMethod.Post, new with { .class = "myclass" })

파서는 코드의 해당 시점에있는 컨텍스트가 주어지면 힌트가 필요한 경우 충분히 똑똑하지 않습니다.
toddmo

3

CSS 개발의 현재 모범 사례는 웹 사이트 전체에 가능한 한 광범위하게 적용 할 수있는 수정자를 사용하여보다 일반적인 선택기를 만드는 것입니다. 개별 페이지 요소에 별도의 스타일을 정의하지 않으려 고합니다.

<form/>요소 에서 CSS 클래스의 목적이 양식 내 요소의 스타일을 제어하는 것이라면 <fieldset/>ASP.NET MVC에 의해 생성 된 웹 페이지에서 기본적으로 모든 양식을 캡슐화 하는 기존 요소를 클래스 속성에 추가 할 수 있습니다 . 폼의 CSS 클래스는 거의 필요하지 않습니다.


4
당신은 확실히 맞지만이 경우는 다릅니다. 몇 가지 jquery 플러그인에 메타 데이터를 지정하는 방법을 찾고있었습니다. 이것은 일반적으로 class 속성을 잘못 사용하여 수행됩니다.
Adrian Grigore

13
모범 사례를 제안 할 수 있지만 양식에 CSS를 사용하는 템플릿이있는 경우 템플릿을 "정확하게"만들기 위해 정육점으로 가지 않을 것입니다. 현실은, 당신이 CSS에 의해 옳은 일을했기 때문에 고객이 더 지불하지 않을 것입니다 ...
Christian Payne

1
@ChristianPayne 그들은 당신이하지 않기 때문에 미래에 더 많은 돈을 지불해야 할 수도 있습니다.
Ian Warburton

1
질문에 대답하지 않기 때문에이 답변을 다운 투표했습니다. 보다 적절한 답변은 먼저 질문에 대답 한 다음 모범 사례 지침을 제공합니다.
Ben
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.