Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Eu não sei quase nada de ASP, e nem gosto muito dele, mas estou tendo que desenvolver um site em ASP então estou tendo que me virar. :)
O lance é o seguinte, eu criei algumas funções simples pra facilitar na manutenção do site, coisa simples, não muito bonita, mas que economiza tempo e paciência na hora de atualizar, já que o site será estático.
Fiz uma função que gera um breadcrumb a partir de um dicionário que é passado no início da página, tipo:
<%
Set dict = server.CreateObject("Scripting.Dictionary")
dic.Add "Nome da seção", "url"
dic.Add "Nome da categoria", "url"
%>A função faz o seguinte:1. Coloca o link pra página principal
2. Monta o breadcrumb usando os itens do dicionários e seus respectivos valores
3. Coloca o nome página atual (sem link)
Acontece que, mesmo em páginas simples, onde não é necessário nada no breadcrumb além de "Principal >> Nome da Página", eu preciso deixar o "Set dict ...". Isso é feio, muito feio. Tem como contornar isso? O código da função é o seguinte:
function Breadcrumb()
response.Write("<ul id='breadcrumb'><li><a href='./'>Principal</a> »</li>")
if dict.count > 0 then
Dim k, v, i, a
k = dict.Keys
v = dict.Items
for i = 0 to dict.count -1
a = "<li><a href='" & v(i) & "'>" & k(i) & "</a> »</li>"
response.Write(a)
next
end if
response.Write("<li class='title'>" & title & "</li></ul>")
end functionJá tentei colocar apenas "if dict then ..." no início da função, mas não funcionou. Como eu devo fazer?Além disso, há alguma forma mais elegante de criar itens de dicionários do que adicioná-los um a um com dict.Add, como estou fazendo?Fernando, agora a situação é revesa: quando não há caminhos no breadcrumb ("Principal >> Nome da página") funciona, mas quando há caminho ("Principal >> Categoria >> Nome da página"), dá o erro Objeto necessário: "dict"
Eu já tentei colocar o "Set dict ..." dentro da função Breadcrumb() (tendo, portanto, escopo local), já tentei colocar fora da função (tendo, portanto, escopo global (?)). De forma nenhuma funcionou... :/
Faça dessa forma:
CODE
<%
Set oDic = Server.CreateObject("Scripting.Dictionary")
oDic.Add "Nome da seção", "url"
oDic.Add "Nome da categoria", "url"
'-- Funcao BreadCrump --'
function Breadcrumb(byRef meuDicionario)
response.Write("<ul id='breadcrumb'><li><a href='./'>Principal</a> »</li>")
If IsObject(meuDicionario) Then
if meuDicionario.count > 0 then
Dim k, v, i, a
k = meuDicionario.Keys
v = meuDicionario.Items
for i = 0 to meuDicionario.count -1
a = "<li><a href='" & v(i) & "'>" & k(i) & "</a> »</li>"
response.Write(a)
next
'response.Write("<li class='title'>" & title & "</li></ul>")
end if
End If
End Function
'-- Executa a função --'
Call Breadcrumb(oDic)
%>
O detalhe aqui é que estou criando o Dictionary fora da função e passando pra ela via referencia ByRef e o outro detalhe é que verifico antes de manipular o dictionary ...se ele é um objeto(ISOBJECT).
Espero ter ajudado.....testei esse script e funciona normalmente. você poderá testa-lo nao criando as entradas.... ".add" que ele ira funcionar exibindo apenas a migalha "página".
Qualquer dúvida fico a disposição.
Att.,
Jorge Santos
acho q pra verificar se o objeto existe no asp tem q usar o Is....
nao sei faz um tempo q nao mexo mas deve ser
If Not(obj Is Nothing) Then
ou entao
If Not(obj = Nothing) Then
acho q nao eh necessario criar todas as vezes... mas nao garanto nada, nao tive tempo de testar este codigo.
http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif