Posso utilizar ViewState para eliminar a necessidade de passar uma seqüência de consulta?

StackOverflow https://stackoverflow.com/questions/1206492

  •  05-07-2019
  •  | 
  •  

Pergunta

Eu tenho uma página com várias listas expansíveis. Em um mundo perfeito, eu gostaria de exibir links para cada uma dessas listas e quando um é clicado ele irá recarregar a página com a lista específica exibida. Eu li que ViewState pode eliminar a necessidade de campos de entrada ocultos, seqüências de consulta, etc, mas eu não estou familiarizado com o conceito.

Basicamente eu preciso para realizar duas coisas:

  1. Adicionar ID de lista para ViewState obj quando o link é clicado
  2. Leia ID de ViewState obj quando a página é carregada, exibição que lista

Alguém pode me fornecer alguns recursos e / ou ajuda sobre este tema? Obrigado!

Foi útil?

Solução

ViewState é essencialmente um campo escondido longa codificado, armazenado no topo de sua página. A principal diferença entre isso e um campo oculto regular é que ASP .NET irá decodificá-lo e analisá-lo automaticamente em uma nova postagem.

Existem melhores maneiras de conseguir o que você quer fazer.

  • Você pode usar o querystring. Tudo o que você está passando é um ID lista. Acrescente o ID da lista até o fim de seus links, e olhar para ele sobre Page_Load. Carregar a lista apropriada se você encontrá-lo. Você vai querer lidar com o caso em que um ID da lista não é passado. A querystring não é mau . Ele pode dramaticamente ajudar a reduzir o peso da página. Quando usado com um decente URL banner , você terá um monte de controle sobre o que se passou (e crucialmente, que não funciona)
  • Se você estiver usando controles ASP .NET (como Botão ou LinkButton) para acionar a exibição de uma lista, você pode definir a propriedade CommandArgument e pegá-lo no código de evento. Você pode então passar este como um parâmetro para qualquer método ou Control está a lidar com sua lista de renderização.

Outras dicas

ViewState é usado para armazenar informações em uma única página entre costas post, não passar argumentos entre as páginas.

Você pode passar argumentos entre as páginas usando:

  1. Session
  2. string de consulta
  3. Os cookies
  4. Banco de dados personalizado
  5. Cross-página postbacks

Nenhum desses métodos irá adicionar automaticamente os dados para o ViewState da página que está sendo solicitado. Desses, acredito única # 2 funciona com links HTML retas (GET), o resto geralmente envolvem uma nova postagem (POST).

Você sempre vai precisar de algum tipo de ViewState setter ( ViewState [ "Id"] = source.Id ) na página solicitada.

Como: Valores passar entre ASP.NET Web Pages

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top