|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
呵呵,那你就关注微软的招聘信息以及别人的招聘经验啊,还有也不一定去做技术的,你如果真的想去就多了解了解。(其实我的意思是说想到微软做技术是很不容易的。asp.net|导航|控件刚入手下手打仗menu控件,感到怎样这么别扭啊。
起首说数据会见部分,为了所谓的providerpattern,一层一层的包装,并且都是些黑盒子,固然观点是挺先辈,布局好象也很分明,但仍是让我觉的恍恍惚惚,至于嘛,只是想做几个数据驱动的menu罢了。另有谁人前台的menu类,那末多的Properties,特别想到menu类也是个黑盒子,一点都不晓得,它天生的xhtml会是甚么样的,而我只要一点点CSS常识罢了,想到这里连实验的愿望都没了。还不如本人下手亲身写一个menu呢,网上好象有很多多少现成的javascript类,好比这个:
Div_css布局的,固然没有asp.net控件那末大度,可也非常有用,最少都是通明的。不外背景有点贫苦,事先的设法是:
1计划一个类sitemap,从数据库里读导航信息,然后存到一个dataset中,
2在application_start事务处置函数中实例化一个sitemap和一个sqlCachedependency,拔出到cache中。
3一个dependency的回调函数,以更新cache中的数据
4从cache中提取数据天生menu。
如许一来能够设想default.master的代码的代码会七零八落。不但不太简单写,写好的代码也不太简单复用。并且另有关于cache的良多成绩。
一定有其他举措,asp.net很多多少器材我都没有打仗过。不外如今想一想providerpattern仍是不错,一层api毗连暗示层,一层api毗连数据会见层。
自愿进修menu类,但愿它不要太让人不测。终究分明为何开源让那末多人冲动,开放通明啊!
/**//*****************************************************
*ypSlideOutMenu
*3/04/2001
*
*anicelittlescripttocreateexclusive,slide-out
*menusforns4,ns6,mozilla,opera,ie4,ie5on
*macandwin32.Ivegotnolinuxorunixtotestonbut
*itshould(?)work...
*
*Revised:
*-08/29/2002:added.hideAll()
*-04/15/2004:added.writeCSS()tosupportmore
*
than30menus.
*
*--youngpup--
*****************************************************/
ypSlideOutMenu.Registry=[]
ypSlideOutMenu.aniLen=250
ypSlideOutMenu.hideDelay=1000
ypSlideOutMenu.minCPUResolution=10
//constructor
functionypSlideOutMenu(id,dir,left,top,width,height)
...{
this.ie=document.all?1:0
this.ns4=document.layers?1:0
this.dom=document.getElementById?1:0
if(this.ie||this.ns4||this.dom)...{
this.id=id
this.dir=dir
this.orientation=dir=="left"||dir=="right"?"h":"v"
this.dirType=dir=="right"||dir=="down"?"-":"+"
this.dim=this.orientation=="h"?width:height
this.hideTimer=false
this.aniTimer=false
this.open=false
this.over=false
this.startTime=0
this.gRef="ypSlideOutMenu_"+id
eval(this.gRef+"=this")
ypSlideOutMenu.Registry[id]=this
vard=document
varstrCSS="";
strCSS+=#+this.id+Container{visibility:hidden;
strCSS+=left:+left+px;
strCSS+=top:+top+px;
strCSS+=overflow:hidden;z-index:10000;}
strCSS+=#+this.id+Container,#+this.id+Content{position:absolute;
strCSS+=width:+width+px;
strCSS+=height:+height+px;
strCSS+=clip:rect(0+width++height+0);
strCSS+=}
this.css=strCSS;
this.load()
}
}
ypSlideOutMenu.writeCSS=function()...{
document.writeln(<styletype="text/css">);
for(varidinypSlideOutMenu.Registry)...{
document.writeln(ypSlideOutMenu.Registry[id].css);
}
document.writeln(</style>);
}
ypSlideOutMenu.prototype.load=function()...{
vard=document
varlyrId1=this.id+"Container"
varlyrId2=this.id+"Content"
varobj1=this.dom?d.getElementById(lyrId1):this.ie?d.all[lyrId1]:d.layers[lyrId1]
if(obj1)varobj2=this.ns4?obj1.layers[lyrId2]:this.ie?d.all[lyrId2]:d.getElementById(lyrId2)
vartemp
if(!obj1||!obj2)window.setTimeout(this.gRef+".load()",100)
else...{
this.container=obj1
this.menu=obj2
this.style=this.ns4?this.menu:this.menu.style
this.homePos=eval("0"+this.dirType+this.dim)
this.outPos=0
this.accelConst=(this.outPos-this.homePos)/ypSlideOutMenu.aniLen/ypSlideOutMenu.aniLen
//seteventhandlers.
if(this.ns4)this.menu.captureEvents(Event.MOUSEOVER|Event.MOUSEOUT);
this.menu.onmou搜索引擎优化ver=newFunction("ypSlideOutMenu.showMenu("+this.id+")")
this.menu.onmou搜索引擎优化ut=newFunction("ypSlideOutMenu.hideMenu("+this.id+")")
//setinitialstate
this.endSlide()
}
}
ypSlideOutMenu.showMenu=function(id)
...{
varreg=ypSlideOutMenu.Registry
varobj=ypSlideOutMenu.Registry[id]
if(obj.container)...{
obj.over=true
for(menuinreg)if(id!=menu)ypSlideOutMenu.hide(menu)
if(obj.hideTimer)...{reg[id].hideTimer=window.clearTimeout(reg[id].hideTimer)}
if(!obj.open&&!obj.aniTimer)reg[id].startSlide(true)
}
}
ypSlideOutMenu.hideMenu=function(id)
...{
varobj=ypSlideOutMenu.Registry[id]
if(obj.container)...{
if(obj.hideTimer)window.clearTimeout(obj.hideTimer)
obj.hideTimer=window.setTimeout("ypSlideOutMenu.hide("+id+")",ypSlideOutMenu.hideDelay);
}
}
ypSlideOutMenu.hideAll=function()
...{
varreg=ypSlideOutMenu.Registry
for(menuinreg)...{
ypSlideOutMenu.hide(menu);
if(menu.hideTimer)window.clearTimeout(menu.hideTimer);
}
}
ypSlideOutMenu.hide=function(id)
...{
varobj=ypSlideOutMenu.Registry[id]
obj.over=false
if(obj.hideTimer)window.clearTimeout(obj.hideTimer)
obj.hideTimer=0
if(obj.open&&!obj.aniTimer)obj.startSlide(false)
}
ypSlideOutMenu.prototype.startSlide=function(open)...{
this[open?"onactivate":"ondeactivate"]()
this.open=open
if(open)this.setVisibility(true)
this.startTime=(newDate()).getTime()
this.aniTimer=window.setInterval(this.gRef+".slide()",ypSlideOutMenu.minCPUResolution)
}
ypSlideOutMenu.prototype.slide=function()...{
varelapsed=(newDate()).getTime()-this.startTime
if(elapsed>ypSlideOutMenu.aniLen)this.endSlide()
else...{
vard=Math.round(Math.pow(ypSlideOutMenu.aniLen-elapsed,2)*this.accelConst)
if(this.open&&this.dirType=="-")d=-d
elseif(this.open&&this.dirType=="+")d=-d
elseif(!this.open&&this.dirType=="-")d=-this.dim+d
elsed=this.dim+d
this.moveTo(d)
}
}
ypSlideOutMenu.prototype.endSlide=function()...{
this.aniTimer=window.clearTimeout(this.aniTimer)
this.moveTo(this.open?this.outPos:this.homePos)
if(!this.open)this.setVisibility(false)
if((this.open&&!this.over)||(!this.open&&this.over))...{
this.startSlide(this.over)
}
}
ypSlideOutMenu.prototype.setVisibility=function(bShow)...{
vars=this.ns4?this.container:this.container.style
s.visibility=bShow?"visible":"hidden"
}
ypSlideOutMenu.prototype.moveTo=function(p)...{
this.style[this.orientation=="h"?"left":"top"]=this.ns4?p:p+"px"
}
ypSlideOutMenu.prototype.getPos=function(c)...{
returnparseInt(this.style[c])
}
ypSlideOutMenu.prototype.onactivate=function()...{}
ypSlideOutMenu.prototype.ondeactivate=function()...{}
2003年中微软发布最新版本的ASP.netWebMatrix,对于我们喜欢用Asp.net来编程的朋友实在是个好消息,我也实实在在的将Asp.net更深入的研究了一下,以方便我以后更好的运用它,同时我也讲讲使用它的感受。 |
|