Pergunta

Então, eu entendo o básico do padrão prg. Mas eu não vim através de uma técnica para fazer dados arbitrários disponíveis para a "pegar" instância de uma página.

Por exemplo, eu poderia querer exibir diferentes mensagens de feedback para o usuário, dependendo de sua ação que iniciou a postagem.

O que eu tenho feito é o envio de um identificador como um parâmetro de string de consulta. Isso funciona bem mas introduz questões bookmarking e não parece como seria escalar muito bem. E se eu precisava para enviar todo o ViewState?

Infelizmente, eu estou amarrado a WebForms no momento e não ter sido capaz de convencer minha organização a migrar para MVC.

Foi útil?

Solução

Se os campos POSTed estão sendo persistiu antes do redirecionamento e você precisa acessar os dados após o redirecionamento, gostaria de acrescentar o identificador para o registro de dados (s) na cadeia de consulta como você menciona. Você também pode especificar um status para a solicitação (para a exibição de mensagens, etc.). Em seguida, na página GET você pode ler os dados e fazer tudo com ele.

Eu não vejo outra maneira de contornar este problema como cada página obtida por GET não terá acesso a da página anterior ViewState etc.

Usando Server.Transfer terá o mesmo efeito que manusear o POST na página original.

Você pode usar variáveis ??de sessão para armazenar os dados POST, mas que fede.

Outras dicas

Eu acho que você ainda pode usar o método get no elemento de formulário. Neste caso, você não será capaz de usar o ID de seu controle de maneira normal. Mas você pode usar a coleção Request.Params para obter o estado de visualização.

Atualização: Desculpe, eu apenas tentei novamente. e descobri que você pode acessar seu controle servidor por seu ID no codebehind. como:

Response.Write(text1.Text)

veja o exemplo:

A página aspx (apenas o elemento de formulário):

< form id="form1" runat="server" method="get">
< div>
< asp:TextBox ID="text1" runat="server" />
< asp:Button ID="button1" runat="server" OnClick="buttonClick" />
< div>
< form>

NOTA: Eu usei um espaço antes de cada "<" caso contrário, o código acima não será visível.

o código por trás da página (único botão clique evento):

protected void buttonClick(object sender, EventArgs e)
    {
        string text = Request.Params["text1"];

        Response.Write(text);
    }

Quando você clica no botão a url será parecido com este:

http: // localhost: 1157 / WebSite1 / Default.aspx __ VIEWSTATE =% 2FwEPDwUKMTkwNjc4NTIwMWRkoJEtEHZ8lHQ53QllSkz8ncpEw80% 3D & __ EVENTVALIDATION =% 2FwEWAwKf% 2BPPUCwKTjKGwCgKs34rGBvus9oxN% 2FQkHlkzpKUEwrbxHLM6u & text1 = ashish & button1 =

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