2011-02-03 4 views
28

WebGrid 헬퍼를 사용하여 렌더링 된 테이블에 사용자 정의 HTML5 데이터 속성을 추가하는 동안 문제가 발생합니다. 여기 MVC3을 사용하여 html 속성 이름에 하이픈 추가 WebGrid 헬퍼

<table data-test="testdata"><!-- Table Content --></table> 

는 면도기보기 엔진을 사용하여 샘플이다 : 다음과 같이 나는 테이블 태그보고 싶다 ". 잘못된 익명 형식 멤버 선언자"

@{ 
    var myUser = new 
    { 
     Id = 1, 
     Name = "Test User" 
    }; 

    var users = new[] { myUser }; 

    var grid = new WebGrid(users); 
} 
@grid.GetHtml(htmlAttributes: new { data-test = "testdata"}) 

마지막 줄이 생성됩니다 오류는 데이터 테스트의 하이픈 때문에 발생합니다.

다른 입력 HtmlHelpers 중 일부는 하이픈 대신 밑줄을 사용할 수 있으며 렌더링 될 때 자동으로 하이픈으로 변경됩니다. 이것은 WebGrid에서 발생하지 않습니다.

내가 htmlAttributes에 대한 사전에 전달하는 경우 :

@grid.GetHtml(htmlAttributes: new Dictionary<string, object> {{ "data-test", "testdata"}}) 

테이블이 같은 렌더링됩니다 :

<table Comparer="System.Collections.Generic.GenericEqualityComparer`1[System.String]" Count="1" Keys="System.Collections.Generic.Dictionary`2+KeyCollection[System.String,System.Object]" Values="System.Collections.Generic.Dictionary`2+ValueCollection[System.String,System.Object]"><!-- Table Content --></table> 

내가 잘못 뭐하는 거지 내가 원하는대로 속성을 렌더링 무엇을해야합니까?

+0

속성 이름의'@'를 쓰면 어떻게 될까요? 'class'가 특별하기 때문에'@ class'를 입력해야하는 클래스의 속성을 추가하려면이 속성이 특수 속성에도 적용됩니까? –

+0

앞에 @를 넣는 것은 거기에없는 것과 같은 행동입니다. –

답변

43

나는 이것이 가능하지 않을 까봐 두렵다. 불행하게도 WebGrid이 같은 TextBoxFor 같은 표준 HTML 도우미와 같은 구문을 지원하지 않는 경우 그럴 수 :

@Html.TextBoxFor(x => x.SomeProp, new { data_test = "testdata" }) 

및 밑줄이 자동으로 대시로 변환합니다.

+12

불행히도 그것은 Html.BeginForm()으로 작동하지 않습니다. 그래서 우리는 이런 식으로 @using (Html.BeginForm ("view", "controller", FormMethod.Post, new Dictionary {{ "data- test ","testdata "}})) – Korayem

+0

멋진 친구 :) –