Estoy teniendo un problema al intentar agregar una costumbre HTML5 datos de atributo a la tabla que se representa mediante la WebGrid ayudante. Quiero que la etiqueta de la tabla como sigue:

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

Aquí se muestra un ejemplo de la vista usando el motor de vistas 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 última línea producirá un «no Válido tipo anónimo miembro de la sentencia declarativa.» error, porque el guión en los datos de prueba.

Con algunos de los otros de entrada HtmlHelpers, puede utilizar un carácter de subrayado en lugar del guión y se cambiará automáticamente a un guión cuando se representa. Esto no sucede con el WebGrid.

Si me pasan en un diccionario htmlAttributes:

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

la tabla se procesa como tal:

<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é estoy haciendo mal y qué debo hacer representar el atributo deseado?

  • ¿qué sucede cuando usted pone @ delante de su nombre de atributo? si desea agregar un atributo de la clase que usted necesita para el tipo de @class porque class es especial, ¿esto también se aplica a su atributo especial?
  • Poner @ en frente tiene el mismo comportamiento que no tenerlo allí.
InformationsquelleAutor John Allers | 2011-02-03

1 Comentario

  1. 46

    Me temo que esto no es posible. Por desgracia, la WebGrid no es compatible con la misma sintaxis estándar de HTML helper como TextBoxFor donde usted podría:

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

    y el carácter de subrayado sería convierte automáticamente a dash.

    • Lamentablemente no funciona con Html.BeginForm() así que tuvimos que hacerlo de esta manera @using (Html.BeginForm(«ver», «controlador», FormMethod.Post,nuevo Diccionario<string, object>{{ «datos de prueba», «testdata» }} ))
    • impresionante tio 🙂

Dejar respuesta

Please enter your comment!
Please enter your name here