2011-02-03 15 views
28

WebGrid yardımcısı kullanılarak oluşturulan tabloya özel bir HTML5 veri özniteliği eklemeye çalışırken sorun yaşıyorum. İşte MVC3 WebGrid yardımcısını kullanarak html öznitelik adına tire ekleme

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

Jilet görünümü motoru kullanarak örnek bir görünümüdür: şu şekildedir: Ben masa etiketi bakmak istiyorum "Geçersiz anonim tip üyesi Bildiricisi"

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

    var users = new[] { myUser }; 

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

son satırı bir üretecek hata, veri testindeki tire nedeniyle.

Diğer giriş HtmlHelpers'ın bazılarıyla, tire işareti yerine alt çizgi kullanabilir ve işlendiğinde otomatik olarak bir tireye dönüşecektir. Bu WebGrid ile olmaz.

Ben htmlAttributes için sözlükte geçerseniz:

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

tablo gibi işlenen alır:

<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> 

Neyi yanlış yapıyorum ve istenilen şekilde niteliğini işlemek ne yapmalıyız?

+0

Özellik adınızın önüne '@' yazdığınızda ne olur? Eğer sınıfın bir niteliğini eklemek istiyorsanız 'class 'yazmanız gerekiyor çünkü' class 'özeldir, bu sizin de özel özniteliğiniz için geçerli olur mu? –

+0

Ön tarafa koymak, oraya sahip olmayla aynı davranışı gösterir. –

cevap

43

Bunun mümkün olmadığından korkuyorum. Maalesef WebGrid böyle TextBoxFor olarak standart HTML yardımcısı olarak aynı sözdizimi desteklemiyor nerede size:

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

ve alt çizgi otomatik olarak çizgi dönüştürülür olacaktır.

+12

Ne yazık ki Html.BeginForm() ile çalışmaz bu yüzden @using (Html.BeginForm ("view", "controller", FormMethod.Post, yeni Dictionary {{"data- test "," testdata "}})) – Korayem

+0

harika dostum :) –