/ / Quando devo usar um “Hidden TextBox” e quando devo usar um (html 5) “data-attribute”? - c #, javascript, jquery, html, asp.net-mvc-3

Quando devo usar um "Hidden TextBox" e quando deve usar um (html 5) "data-attribute"? - c #, javascript, jquery, html, asp.net-mvc-3

Eu preciso passar alguns dados do meu controlador para o meuVisão. Esses dados serão usados ​​pelo jQuery para fazer algumas coisas. Os dados são uma string curta. Eu poderia colocá-lo em uma caixa de texto oculta e acessar o valor da caixa de texto usando jQuery. Eu também poderia colocar um atributo de dados no elemento html que os dados dizem respeito. Gostaria de saber qual seria o melhor caminho.

Para nomear um caso específico em que eu tive que fazer issoescolha: Eu tive uma visão parcial genérica que precisa fazer uma chamada de ajax para atualizar alguns dados na visão. No entanto, o destino da chamada do ajax depende do contexto da vista parcial. Daí eu passo um link para o modelo de visão da visão parcial. Onde eu armazeno esses dados para o jQuery acessá-los?

Eu sinto que o atributo de dados é de alguma forma mais agradável porque eu sinto que o propósito dos campos de entrada ocultos tem mais a ver com a postagem de informações junto com o resto do formulário.

Existe um consenso geral sobre isso?

Desde já, obrigado.

Respostas:

4 para resposta № 1

Eu só usaria uma entrada de formulário oculto se eu estivesseplanejando enviar os dados de volta ao servidor por meio de um formulário. Se isso não for um requisito, usar um atributo de dados pode ser muito mais simples. Ele não requer um formulário e você pode acessar o valor mais facilmente por meio de jQuery (ou JavaScript simples) de manipuladores de eventos no elemento em questão.


2 para resposta № 2

Use um modelo e passe esse modelo para a exibição. Este modelo conterá todos os dados necessários. Em seguida, explore esses dados para gerar um HTML5 data-* Atributo para algum elemento DOM que você seria discretamente AJAXify. Exemplo:

<div id="someDiv" data-remote-url="@Model.SomeModelPropertyContainingTheUrl"></div>

e depois:

var url = $("#someDiv").data("remote-url");
...

Se você já tem um formulário na página em que será AJAXifying, você pode usar o action atributo deste formulário ou ainda um campo oculto se o valor for diferente.