Estoy tratando de usar atributos de datos HTML5 en mi proyecto ASP.NET MVC 1. (Soy un novato de C # y ASP.NET MVC).
<%= Html.ActionLink("« Previous", "Search",
new { keyword = Model.Keyword, page = Model.currPage - 1},
new { @class = "prev", data-details = "Some Details" })%>
Los "datos-detalles" en los htmlAttributes anteriores dan el siguiente error:
CS0746: Invalid anonymous type member declarator. Anonymous type members
must be declared with a member assignment, simple name or member access.
Funciona cuando uso data_details, pero supongo que debe comenzar con "data-" según la especificación.
Mis preguntas:
- ¿Hay alguna manera de hacer que esto funcione y usar atributos de datos HTML5 con Html.ActionLink o ayudantes Html similares?
- ¿Existe algún otro mecanismo alternativo para adjuntar datos personalizados a un elemento? JS procesará estos datos posteriormente.
asp.net-mvc
html
custom-data-attribute
Shameem
fuente
fuente
Respuestas:
Actualización: MVC 3 y versiones más recientes tienen soporte incorporado para esto. Vea la respuesta altamente votada de JohnnyO a continuación para obtener soluciones recomendadas.
No creo que haya ayudantes inmediatos para lograr esto, pero tengo dos ideas para que pruebes:
Solo ideas, no lo he probado.
fuente
Este problema se ha solucionado en ASP.Net MVC 3. Ahora convierten automáticamente guiones bajos en propiedades de atributo html a guiones. Tuvieron suerte con este, ya que los guiones bajos no son legales en los atributos html, por lo que MVC puede implicar con confianza que desea un guión cuando usa un guión bajo.
Por ejemplo:
renderizará esto en MVC 3:
Si todavía usa una versión anterior de MVC, puede imitar lo que está haciendo MVC 3 creando este método estático que tomé prestado del código fuente de MVC3:
Y luego puedes usarlo así:
y esto representará el atributo correcto data- *:
fuente
WebGrid.GetHtml(htmlAttributes: new { data_some : "thing" })
. : '(RouteValueDictionary
incluido en losHtml.Something()
métodos de MVC3 . Es posible queWebGrid
no se haya actualizado de la misma manera, o puede consultar la versión en elSystem.Web.Helpers.dll
Es incluso más fácil que todo lo sugerido anteriormente. Los atributos de datos en MVC que incluyen guiones (-) se atienden con el uso de guión bajo (_).
Veo que JohnnyO ya mencionó esto.
fuente
En mvc 4 podría representarse con subrayado ("_")
Maquinilla de afeitar:
HTML rendido
fuente
data-date
atributo, ¿cómo podría publicarlo en el controlador / acción? También lo que es% 23 allíPuede implementar esto con una nueva función de extensión auxiliar de HTML que luego se utilizará de manera similar a los ActionLinks existentes.
Y lo llamas así ...
Simples :-)
editar
un poco más de una escritura aquí
fuente
Terminé usando un hipervínculo normal junto con
Url.Action
, como en:Es más feo, pero tiene un poco más de control sobre la
a
etiqueta, que a veces es útil en sitios muy AJAXified.HTH
fuente
No me gusta usar la etiqueta "a" pura, escribir demasiado. Entonces vengo con la solución. A la vista se ve
Implementación de la clase Dic
fuente
t
al final al menos!Puedes usarlo así:
En Mvc:
En HTML:
fuente