Fórum Melhor forma e dll #1650
06/01/2009
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
Posts
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
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.
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
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
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
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
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
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
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
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.
Olá preciso saber se você tem mais alguma dúvida, posso encerrar o chamado?
Fabio
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
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