Estou tentando usar atributos de dados HTML5 no meu projeto ASP.NET MVC 1. (Sou iniciante em C # e ASP.NET MVC.)
<%= Html.ActionLink("« Previous", "Search",
new { keyword = Model.Keyword, page = Model.currPage - 1},
new { @class = "prev", data-details = "Some Details" })%>
Os "dados-detalhes" nos htmlAttributes acima fornecem o seguinte erro:
CS0746: Invalid anonymous type member declarator. Anonymous type members
must be declared with a member assignment, simple name or member access.
Funciona quando uso dados_detalhes, mas acho que precisa começar com "dados-" conforme as especificações.
Minhas perguntas:
- Existe alguma maneira de fazer isso funcionar e usar atributos de dados HTML5 com os auxiliares Html.ActionLink ou Html semelhantes?
- Existe algum outro mecanismo alternativo para anexar dados personalizados a um elemento? Esses dados devem ser processados posteriormente pelo JS.
asp.net-mvc
html
custom-data-attribute
Shameem
fonte
fonte
Respostas:
Atualização: MVC 3 e versões mais recentes têm suporte interno para isso. Veja a resposta altamente votada do JohnnyO abaixo para obter as soluções recomendadas.
Não acho que haja ajudantes imediatos para conseguir isso, mas tenho duas idéias para você tentar:
Apenas idéias, não testei.
fonte
Esse problema foi solucionado no ASP.Net MVC 3. Agora, eles convertem automaticamente sublinhados nas propriedades de atributo html em traços. Eles tiveram sorte com este, pois os sublinhados não são legais nos atributos html, portanto, o MVC pode sugerir com confiança que você gostaria de um traço ao usar um sublinhado.
Por exemplo:
renderizará isso no MVC 3:
Se você ainda estiver usando uma versão mais antiga do MVC, poderá imitar o que o MVC 3 está fazendo, criando este método estático que eu emprestei do código-fonte do MVC3:
E então você pode usá-lo assim:
e isso renderizará o atributo data- * correto:
fonte
WebGrid.GetHtml(htmlAttributes: new { data_some : "thing" })
. : '(RouteValueDictionary
nosHtml.Something()
métodos do MVC3 . É possível queWebGrid
não tenha sido atualizado da mesma forma, ou você pode verificar a versão noSystem.Web.Helpers.dll
É ainda mais fácil do que tudo sugerido acima. Os atributos de dados no MVC que incluem traços (-) são atendidos com o uso de sublinhado (_).
Eu vejo JohnnyO já mencionado isso.
fonte
No mvc 4 pode ser renderizado com sublinhado ("_")
Navalha:
Html renderizado
fonte
data-date
no atributo, como eu poderia publicá-lo no controlador / ação? Também o que é% 23 láVocê pode implementar isso com uma nova função de extensão auxiliar de HTML, que será usada de maneira semelhante aos ActionLinks existentes.
E você chama assim ...
Simples :-)
editar
um pouco mais de escrever aqui
fonte
Acabei usando um hiperlink normal junto com
Url.Action
, como em:É mais feio, mas você tem um pouco mais de controle sobre a
a
tag, que às vezes é útil em sites fortemente com AJAX.HTH
fonte
Eu não gosto de usar a tag "a" pura, digitando demais. Então eu venho com solução. Em vista, parece
Implementação da classe Dic
fonte
t
pelo menos um extra no final!Você pode usá-lo assim:
No Mvc:
Em HTML:
fonte