asp.net-mvc - net - attribut html definition



Ajout d'un trait d'union au nom d'attribut html à l'aide de MVC3 WebGrid helper (1)

J'ai peur que ce ne soit pas possible. Malheureusement, le WebGrid ne supporte pas la même syntaxe que l'aide HTML standard comme TextBoxFor où vous pouvez:

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

et le trait de soulignement serait automatiquement converti en tiret.

Je rencontre un problème lors de la tentative d'ajout d'un attribut de données HTML5 personnalisé à la table rendue à l'aide de l'assistant WebGrid. Je veux que l'étiquette de table ressemble à ceci:

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

Voici un exemple d'affichage utilisant le moteur de vue Razor:

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

    var users = new[] { myUser };

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

La dernière ligne produira un "déclarant de membre de type anonyme non valide". erreur, à cause du trait d'union dans le test de données.

Avec certains des autres HtmlHelpers d'entrée, vous pouvez utiliser un trait de soulignement à la place du trait d'union et il sera automatiquement remplacé par un trait d'union lors du rendu. Cela ne se produit pas avec WebGrid.

Si je passe un dictionnaire pour htmlAttributes:

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

la table est rendue en tant que telle:

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

Qu'est-ce que je fais de mal et que dois-je faire pour rendre l'attribut comme désiré?





html-helper