Fórum Melhor forma e dll #1650

06/01/2009

0

Boa tarde,     Estou aprendendo .net e o framework asp.net e tenho acompanhado suas aulas, estou em dúvida sobre algo que preciso fazer, no caso preciso simplesmente pegar os dados que vem de um link, exemplo www.meusite.net/5000 sendo que o a informação desse array e principalmente todo os dados após /, ou seja,  5000 deverá ser usada por todos as páginas do sistema. Pensei em criar uma dll que manterá um session com esses dados, mas nao funciona.     Segue abaixo o que eu tentei, como vim da programação php ainda estou estou familiarizado com esse formato OB   // To search sponsor
        string URL = Request.Url.AbsoluteUri.ToString();
        string[] Site = URL.Split(;);
        string[] Sponsor = Site[1].Split(/);
       
       // Response.Write(Site[1]);
       // Response.Write(Sponsor[4]);         Session["IdS"] = Sponsor[4];
        Response.Write(Session["IdS"]);   Depois de pegar esses dados do link preciso consultar no mysql se o usuário 5000 existe, no entanto, essa parte ainda não consigui sequer visualizar nas aulas.   Como posso fazer a consulta de dados para o mysql?   Cordialmente Regis/ Fernanda
Régis Mello

Régis Mello

Responder

Posts

06/01/2009

Fabio Mans

Olá Regis, boa tarde para você também.   Vamos as dúvidas, em primeiro lugar você não precisa utilizar uma dll, uma vez que você tenha atribuido o valor para a Session ele irá permanecer até você fechar o navegador ou remover a session.     ================================================================ Para remover o valor de um session utilize Session.Remove("nomeDaVariavel");
Session.Remove("cultura");
Session["cultura"] = strCultura; ================================================================   Com o valor 5000 na Session (memória) você irá fazer o select normal SELECT IDCLIENTE, NOME CLIENTE WHERE IDCLIENTE = Session["Cliente"]   Claro que utilizando as classes do ADO.NET, que são as classes de acesso a dados.   O que você chama de formato OB?   Qual aula você está acompanhando? Eu recomendo as aulas do site de Notícias que fala bastante sobre acesso a dados.   Sobre acesso a dados com MySQL não sei se você já fez o Download, mas além do VS você irá precisar dos seguintes aplicativos.   A seguir a relação do que você precisa instalar para poder seguir este artigo passo a passo: MySQL 4.1 em - http://dev.mysql.com/downloads/mysql/4.1.html MySQL Connector/NET no endereço : http://dev.mysql.com/downloads/connector/net/ MySQL Administrator - MySQL Administrator. Dúvida entre em contatos.   Fabio Galante Mans  
Responder

Gostei + 0

06/01/2009

Régis Mello

Não ficou claro para mim.        O que eu devo fazer para pegar o link e dividi-lo em um array onde eu possa obter o número do usuário, como informado www.meusite.com/Id_sponsor , o Id_sponsor é numerica e servirá para pesquisar na tabela cc_reseller se trata-se de um usuário do sistema, fiz uma rotina, no entanto ela gera erro e ocorre que não consigo utilizar essa Session em outras páginas, não sei onde está o erro, mas acontece.   Quero usar um dll para poder ocultar o código e poder usar em outras aplicações.   Tenho o MySql instalado sim.  
Responder

Gostei + 0

06/01/2009

Fabio Mans

Me fala uma coisa você é programador Windows? Na Web os conceitos são diferentes, você não pode criar uma DLL para utilizar a Session, mas você pode utilizar outras formas para manter os dados, como Cookies.   Sobre sua dúvida de como recuperar o ID veja abaixo.   Normalmente uma url com parâmetros que chamamos de QueryString é como no exemplo abaixo, ela pode ter mais de um parâmetro. www.meusite.com?Id_sponsor=680&Nome=Carlos&Idade=25 Para recuperar os valores de uma Query String é simples if (Request.Params["Id_sponsor"] != null) //Estou verificando se ela existe para não ocorrer erro. { Session["ID"] = Request.Params["Id_sponsor"].ToString(); //Session["ID"] recebeu o valor 680 }   Agora se a sua URL não tem o formato acima informe que eu vou te mostrar como você faz para colocar em um Array.   Só para adiantar.   Para varrer todos  string url= www.site.com/id/name;
       string[] stringArray = url.Split(new char[] { / });      
        foreach (string strItem in stringArray)
        {
            string str = string.Format("Item: ", strItem + "
");
            Label1.Text += str;         }     Somente um. string url= www.meusite.com.br/id_sponsor;
string url= (nome.Split(/)).GetValue(0);     Espero ter ajudado.   Fabio
Responder

Gostei + 0

06/01/2009

Régis Mello

Boa tarde tentei as duas opções, no entanto, nenhuma das duas funcionaram.   Eu programo em PHP apenas, estou aprendendo agora outras linguagens,,,,   Vou tentar explicar novamente o que eu preciso fazer....     Quero pegar o usuário vindo do link, não é um Query String, o separador não é ?= ou ?, ele é / como em um diretorio, o que ocorre é que não sei qual recurso da linguagem C# eu uso para capturar o link, então primeiro preciso capturar o link, como eu faço?   Depois preciso pegar a variavel após o / e guardar em um session   Feito isso preciso saber como recuperar essa váriavel em qualquer página do site. Para  posteriormente pesquisar no mysql.   Ou seja, no momento o mais importante é:   1- ) Como capturar o link 2-) Como criar a session com a informação após o / 3-) Como acessar essa session em outras páginas.   Cordialmente Regis / Fernanda
Responder

Gostei + 0

06/01/2009

Fabio Mans

Vamos supor que sua URL SEJA http://localhost:2413/SolicitacaoRebook/Teste1.aspx/680/ string URL = Request.Url.AbsoluteUri; //id recebe o valor 680 string id= (string) (URL.Split(/)).GetValue(5); //Cria a session como valor 680 Session["usuarioId"] = id; ====================================== VALORES DO ARRAY   (URL.Split(/)).GetValue(0) // http
(URL.Split(/)).GetValue(1) //"
(URL.Split(/)).GetValue(2) //localhost:2413
(URL.Split(/)).GetValue(3) //SolicitacaoRebook
(URL.Split(/)).GetValue(4) //Teste1.aspx
(URL.Split(/)).GetValue(5) //680   Com a Session acima em outra página     string idUser = Session["usuarioId].ToString();   Espero ter ajudado
Responder

Gostei + 0

06/01/2009

Régis Mello

Eu até entendo a lógica, o problema é que dá erro; Linha 14: //id recebe o valor 680
Linha 15:
Linha 16: string id= (string) (URL.Split(/)).GetValue(5);
Linha 17: //Cria a session como valor 680
Linha 18: E em outras páginas não acessa a session. Regis/ fernanda
Responder

Gostei + 0

07/01/2009

Fabio Mans

Você viu que no final da URL tem que ter uma barra? Caso contrário o split não consegue pegar o último valor, mostre a sua URL.   Fabio
Responder

Gostei + 0

07/01/2009

Fabio Mans

Você viu que no final da URL tem que ter uma barra? Caso contrário o split não consegue pegar o último valor, mostre a sua URL.   Fabio
Responder

Gostei + 0

07/01/2009

Régis Mello

Nesse caso nenho um problema.   Quantos usuários vão esquecer de colocar a barra no final? Milhares... E isso irá gerar erro.   Consegui pegar o tal numero, mesmo assim ainda não consigo colocar em session, fiz tudo como vc falou, mas na hora de mudar de página o número que eu chamo em outra página simplesmente não está lá.   Em PHP para conservar a session eu tenho que criá´la primeira e sempre referenciar a página onde eu a criei, depois a session estaria em todas as páginas, o método aqui é diferente.... Poderia me detalhar melhor? Os exemplos que eu encontrei também não ajudaram muito, pegar o número eu fiz, agora falta pegar a Session,   Ops... na verdade tenho que descobrir também como eu verifico se o número não está vazio para testar a condição também.   Abraços Valeu pela ajuda   Regis / Fernanda
Responder

Gostei + 0

07/01/2009

Fabio Mans

Você mesmo que passa esta URL? Se sim por que não faz do modo tradicional? (QueryString). Por que não coloca mais um valor após a barra?   Segue abaixo um mini resumo de como passar dados entre as páginas com ASP.NET. Primeiro faça um teste, cria duas páginas e coloque dois TextBox como no exemplo baixo, na outra dois labels, você vai ver que funciona. Depois volta na sua aplicação e tenta novamente.     Métodos de passar dados entre páginas     Como utilizar Session?
  private void Button1_Click(object sender, System.EventArgs e)
  {
      Session["name"] = TextBox1.Text;
      Session["email"] = TextBox2.Text;
      Server.Transfer("Default2.aspx");
  }   Web Form de destino:
  private void Page_Load(object sender, System.EventArgs e)
  {
      Label1.Text = Session["name"].ToString();
      Label2.Text = Session["email"].ToString();
      Session.Remove("name");
      Session.Remove("email");
  }           Como utilizar cookies?
  
 Crie uma página chamada page1.aspx e crie um botão e um Textbox na página. Dê um duplo clique no botão e então adicione o seguinte código:    protected void Button1_Click(object sender, EventArgs e)
   {
      HttpCookie cookie = new HttpCookie("UserName");
      cookie.Value = TextBox1.Text;
      cookie.Expires = DateTime.Now.AddDays(1);
      Response.Cookies.Add(cookie);
      Response.Redirect("Page2.aspx");
   }  page1.aspx:
   <div>
   <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
   <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
   </div>    Na page2.aspx, dê um duplo clique no formulário e adicione o seguitne código:
   protected void Page_Load(object sender, EventArgs e)
   {
    if (Request.Cookies["UserName"] != null)
     Response.Write(Request.Cookies["UserName"].Value);
   }  
Como utilizar QueryString?
  private void Button1_Click(object sender, System.EventArgs e)
  {
      string url;
      url = "anotherwebform.aspx?name=" +
      TextBox1.Text + "&email=" + TextBox2.Text;
      Response.Redirect(url);
  }   Web Form de destino:
  private void Page_Load(object sender, System.EventArgs e)
  {
      Label1.Text = Request.QueryString["name"];
      Label2.Text = Request.QueryString["email"];
  }     Como utilizar Use Context?     //Page1.aspx armazena o valor no context antes da transferencia
  Context.Items("UserName") = txtName.Text;
  Server.Transfer("Page2.aspx");   //Page2.aspx retorna o valor do context da Page1
  string sName;
  sName = Context.Items("UserName").ToString;
  Response.Write("Seu nome é " + sName);     Espero ter ajudado.
Responder

Gostei + 0

09/01/2009

Fabio Mans

Olá preciso saber se você tem mais alguma dúvida, posso encerrar o chamado?   Fabio
Responder

Gostei + 0

09/01/2009

Régis Mello

Na verdade tenho sim.   Mas, acho que seria obrigado a abrir um outro post,   minha dúvida é a seguinte:   Essas regras tem que ser colocadas no .cs concorda? dentro das { } , mas vou usar esse código em todas as páginas do site, então como eu faço para evitar sobre cargarregar o Banco de Dados, uma vez que o número recebido será usado para  usado para selecionar o User na tabela ,   2- ) como eu faço para incluir essa rotina em todas as páginas.     Abraços   Regis / Fernanda  
Responder

Gostei + 0

09/01/2009

Fabio Mans

  No ASP.NET você pode programar no CS ou no ASPX,  o comum é você criar uma classe e sempre que precisar do método chama-lo, ou seja você escreve o método uma vez e chama das outras páginas.   Regis minha dica é você assistir os cursos que a DevMedia disponibiliza, como por exemplo o de C# e ASP.NET para uma melhor compreensão do que estou falando.     Qualquer dúvida estou a disposição.     Fabio
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar