Campos de geração dinamicamente usando jQuery e também fazê -los a lado do servidor no ASP.NET

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

Pergunta

Olá, isso pode parecer uma pergunta estranha, mas aqui está minha situação:

Eu tenho um formulário em que o usuário pode clicar e adicionar linhas que contêm determinados campos de entrada. Isso é estritamente feito no lado do cliente usando o jQuery. Posso acessar os valores de entrada no postback no lado asp.net usando o request.form e o nome dos campos, o que é bom. O problema é que, quando a página postar de volta, os campos obviamente desaparecem. Portanto, não tenho como fazer validação de erros ou outras coisas. Quais são minhas soluções possíveis aqui? Devo gerar dinamicamente os campos correspondentes no lado do servidor quando o postback acontecer e colocar os campos gerados pelo lado do cliente para que seja transparente para os usuários? Isso é uma maneira de fazer as coisas? Existe uma maneira melhor?

Eu estava pensando em adicionar um método Ajax no lado do servidor que retornaria as informações de validação e eu poderia usá -lo para sinalizar erros ou o que não está no lado do cliente sem nunca postar, mas o botão que causa a postagem é o "próximo" Botão, e eu preciso ir para a próxima página se não houver erros.

Estou procurando mais informações que alguém possa ter e prós e contras das abordagens.

Obrigado

Foi útil?

Solução

Se você deseja adicionar campos de entrada dinamicamente, precisará manter um hash do lado do servidor dos campos recém-adicionados e reinstalá-los em Page_init para que eles persistissem entre os postagens.

Eu acho que sua ideia de Ajax é boa:

  1. Ligue para um método do lado do servidor via jQuery (este pode ser um método estático na sua página .aspx.) O método do lado do servidor adiciona um valor de string a um armazenado de sessão List<String>.
  2. Peça ao método retornar o valor da string, que é o ID do elemento a ser adicionado à página.
  3. Adicione os elementos à sua página com jQuery.
  4. Use a variável da sessão para reinstalar seus campos dinamicamente adicionados no postback.

Esse método recebe a velocidade de adicionar os campos no lado do cliente e impedia que seus campos dinâmicos desapareçam no postback.

Outras dicas

1) Rápido e sujo, você pode usar um UpdatePanel, mas isso aumentaria o tamanho do tráfego. Isso permitiria que você incluísse controles de validação, postando de volta toda a marcação para a tabela.

2) Você pode usar algum tipo de método CustomValidator ou de validação personalizado e apenas usar os valores da solicitação.Form. Enquanto você tiver alguma maneira de identificar os campos, poderá resolver isso, mas terá que recriar a cena se o postback falhar, pois você perderá essas peças.

3) Você pode fazer o "postback" inteiro por meio de um webMethod chama e lidar com tudo manualmente. Esta é provavelmente a maneira mais limpa de fazê -lo, pois você está misturando e combinando as coisas tradicionais da Web com um modelo mais clientes.

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