2011-02-03 7 views
28

Mam problem podczas próby dodania niestandardowego atrybutu danych HTML5 do tabeli renderowanej przy użyciu helpera WebGrid. Chcę tag wygląd tabeli w następujący sposób:Dodawanie łącznika do nazwy atrybutu html przy użyciu pomocnika MVC3 WebGrid

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

Oto przykładowa użyciu widoku silnika Razor: „Nieprawidłowe anonimowego użytkownika typ declarator”

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

    var users = new[] { myUser }; 

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

Ostatnia linia wytworzy błąd z powodu łącznika w teście danych.

Przy niektórych innych wejściowych znacznikach HtmlHelpers można użyć podkreślnika zamiast łącznika, a po jego wyrenderowaniu zostanie automatycznie zmieniony na myślnik. Tak się nie dzieje w przypadku WebGrid.

Gdybym przechodzą w słowniku dla htmlAttributes:

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

tabela zostanie wygenerowana jako takie:

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

Co robię źle i co należy zrobić, uczynić atrybut jako pożądany?

+0

co się dzieje, gdy wstawisz '@' infront o nazwie atrybutu? jeśli chcesz dodać atrybut klasy, musisz wpisać '@ class', ponieważ' class' jest wyjątkowe, czy dotyczy to również Twojego atrybutu specjalnego? –

+0

Umieszczenie przycisku @ z przodu ma takie samo działanie, jak jego brak. –

Odpowiedz

43

Obawiam się, że nie jest to możliwe. Niestety WebGrid nie obsługuje tej samej składni w standardzie HTML pomocnika, takich jak TextBoxFor gdzie można:

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

i podkreślenia byłby automatycznie konwertowane do kreska.

+12

Niestety nie działa z Html.BeginForm(), więc musieliśmy to zrobić w ten sposób @using (Html.BeginForm ("widok", "kontroler", FormMethod.Post, nowy słownik {{"dane- test "," testdata "}})) – Korayem

+0

wspaniały koleś :) –

Powiązane problemy