仓酷云

标题: ASP.NET网页设计实例开辟:ASP.NET创立收集相册 [打印本页]

作者: 金色的骷髅    时间: 2015-1-16 22:30
标题: ASP.NET网页设计实例开辟:ASP.NET创立收集相册
你所列的那些其实差不多都可以称为应用服务器(servlet应该说是一种语言更合适)java是开放的,相同的工具就会有很多公司在做,加上java已经发展了很多年了,因此这些工具就很多了。他们很多都是类似的。在如今的数码时期,我们会常常拍摄一些相片以供纪念,而跟着数码照片的增加,常常必要很好地办理这些照片,以便更好地查阅纪念。如今网上有很多的电子相册,都能很好的完成这些功效,那我们可否本人下手创立本人的相册呢?固然能够,在这篇文章中,我们将使用ASP.net,来创立一个复杂的在线相册,以保藏我们的照片。
起首来看下,这个相册有哪些功效。在这个相册中,我们必需先把事后拍照好的照片放到一个目次下往,以后,能够供在网上利用“上一张,下一张”的链接一张张地检察。
上面先先容怎样取得文件夹中的图片。我们可使用System.IO定名空间中的DirectoryInfo类来完成。将文件夹地点的路径做为参数传送到该类的机关函数中,并声明一个DirectoryInfo类的实例。DirectoryInfo类中有一个GetFiles()的办法,会前往FileInfo的工具数组,而每个FileInfo的实例将包括指定路径下文件的详细信息。上面的代码片断申明了该历程:
以下为援用的内容:
SubPage_Load(senderasObject,easEventArgs)
 Getlistofimages
 DimdirInfoasNewDirectoryInfo(Server.MapPath(""))
 Dimimages()asFileInfo=FilterForImages(dirInfo.GetFiles())
 ...
EndSub

个中,用Server.mappath取得以后目次的路径,而dirinfo.getfiles()将会前往该目次下的一切文件。而因为我们的是相册,只必要看到好比JPG,BMP,GIF等图像文件,以是我们能够经由过程程序完成,只装载这些范例的文件,这经由过程一个自界说的历程FilterForImages来完成,该历程将只前往指定文件夹中图像范例的文件。代码以下:
以下为援用的内容:
FunctionFilterForImages(images()asFileInfo)asFileInfo()
 DimnewImagesasNewArrayList(images.Length)
 DimiasInteger
 Fori=0toimages.Length-1
  IfPath.GetExtension(images(i).Name)=".jpg"OrElse_
   Path.GetExtension(images(i).Name)=".jpeg"OrElse_
   Path.GetExtension(images(i).Name)=".png"OrElse_
   Path.GetExtension(images(i).Name)=".gif"then
    newImages.Add(images(i))
  EndIf
 Next
ReturnCType(newImages.ToArray(GetType(FileInfo)),FileInfo())
EndFunction

该历程关于传送出去的FileInfo参数数组举行遍历,对文件夹中的文件的后缀名举行叛断,假如属于图像文件,则增加到newimages数组中往,并以arraylist情势前往。
接上去,我们看下怎样显现每张图片,并以“上一张,下一张”来显现。为了晓得以后扫瞄的是第几张图片,能够经由过程利用传送参数的办法来完成。先往窗体中增加一个image控件和文本框,程序代码以下:
SubPage_Load(senderasObject,easEventArgs)
 ...
DimimgIndexasInteger=0
IfNotRequest.QueryString("N")isNothingAndAlso_
  IsNumeric(Request.QueryString("N"))then
   imgIndex=CInt(Request.QueryString("N"))
EndIf
 
currentImgTitle.Text="YouareViewing:"&_
  Path.GetFileNameWithoutExtension(images(imgIndex).Name)&_
  "("&imgIndex+1&"of"&images.Length&")"
   currentImg.ImageUrl=Path.GetFileName(images(imgIndex).Name)
   ...
EndSub
HTML部分代码
<ASP:Labelrunat="server"id="currentImgTitle"/><br/>
<asp:Imagerunat="server"id="currentImg"/>
在下面的代码中,利用变量imgindex来暗示以后扫瞄的是第几张图片,刚入手下手时分N=0,则取得images数组中的第一个变量,也即第一张图片,以后每次读取该变量值,则能够晓得以后扫瞄的是第几张图片。
而为了完成“下一张,上一张”的功效,往窗体增添两个HyPerlink链接控件,并增加以下代码
以下为援用的内容:
SubPage_Load(senderasObject,easEventArgs)
...
IfimgIndex>0then
 lnkPrev.NavigateUrl="Default.aspx?N="&imgIndex-1
EndIf
IfimgIndex<images.Length-1then
 lnkNext.NavigateUrl="Default.aspx?N="&imgIndex+1
EndIf
...
EndSub

HTML部分代码
以下为援用的内容:
<asp:HyperLinkrunat="server"id="lnkPrev"Text="<Previous"/>|
<asp:HyperLinkrunat="server"id="lnkNext"Text="Next>"/>

下面代码对照简单了解,当点下一张,上一张的链接时,参数N的值加1,大概减1。
最初,为了完成对照直不雅的效果,我们安排一个datalist控件,个中显现图像文件夹下的一切文件,每当扫瞄一张新的图片时,则将以后正在扫瞄的图片的称号以链接的情势加亮显现,代码以下:
以下为援用的内容:
SubPage_Load(senderasObject,easEventArgs)
 ...
 dlIndex.DataSource=images
 dlIndex.DataBind()
EndSub
SubdlIndex_ItemDataBound(senderasObject,easDataListItemEventArgs)
 Ife.Item.ItemType=ListItemType.ItemOrElse_
  e.Item.ItemType=ListItemType.AlternatingItemthen
  GettheHyperlink
   DimhlasHyperLink=CType(e.Item.FindControl("lnkPic"),HyperLink)
  SettheTextandNavigationproperties
  hl.Text=Path.GetFileNameWithoutExtension(_
   DataBinder.Eval(e.Item.DataItem,"Name").ToString())&_
   "("&_
    Int(DataBinder.Eval(e.Item.DataItem,"Length")/1000)&_
   "KB)"
  hl.NavigateUrl="Default.aspx?N="&e.Item.ItemIndex
 EndIf
EndSub

HTML部分代码
以下为援用的内容:
<asp:DataListrunat="server"id="dlIndex"OnItemDataBound="dlIndex_ItemDataBound"
RepeatColumns="3">
<ItemTemplate>
<li><asp:HyperLinkrunat="server"id="lnkPic"/></li>
</ItemTemplate>
</asp:DataList>

在下面的代码中,在DATALIST的onitemdatabound事务中,起首判别以后触发的项目是不是是列表项listitemtype大概是瓜代项AlternatingItem,假如是的话,则静态天生链接hl,设置hl的值为以后正在扫瞄图像的文件名,而且说明了文件的巨细,设置其链接的地点为以后扫瞄图像的地点,如许,用户能够间接点要扫瞄的图片了,纷歧要经由过程上一张,下一张的链接来完成。
最初给出运转的一个例子和全体代码:
以下为援用的内容:
<%@ImportNamespace="System.IO"%>
<scriptrunat="server"language="VB">
SubPage_Load(senderasObject,easEventArgs)
 DimdirInfoasNewDirectoryInfo(Server.MapPath(""))
 Dimimages()asFileInfo=FilterForImages(dirInfo.GetFiles())
 DimimgIndexasInteger=0
 IfNotRequest.QueryString("N")isNothingAndAlsoIsNumeric(Request.QueryString("N"))then
  imgIndex=CInt(Request.QueryString("N"))
 EndIf
 currentImgTitle.Text="YouareViewing:"&_
  Path.GetFileNameWithoutExtension(images(imgIndex).Name)&_
  "("&imgIndex+1&"of"&images.Length&")"
  currentImg.ImageUrl=Path.GetFileName(images(imgIndex).Name)
  IfimgIndex>0then
   lnkPrev.NavigateUrl="Default.aspx?N="&imgIndex-1
  EndIf
  IfimgIndex<images.Length-1then
   lnkNext.NavigateUrl="Default.aspx?N="&imgIndex+1
  EndIf
  dlIndex.DataSource=images
  dlIndex.DataBind()
EndSub
FunctionFilterForImages(images()asFileInfo)asFileInfo()
 DimnewImagesasNewArrayList(images.Length)
 DimiasInteger
 Fori=0toimages.Length-1
  IfPath.GetExtension(images(i).Name)=".jpg"OrElse_
   Path.GetExtension(images(i).Name)=".jpeg"OrElse_
   Path.GetExtension(images(i).Name)=".png"OrElse_
   Path.GetExtension(images(i).Name)=".gif"then
    newImages.Add(images(i))
  EndIf
 Next
 ReturnCType(newImages.ToArray(GetType(FileInfo)),FileInfo())
EndFunction
SubdlIndex_ItemDataBound(senderasObject,easDataListItemEventArgs)
 Ife.Item.ItemType=ListItemType.ItemOrElsee.Item.ItemType=  ListItemType.AlternatingItemthen
  DimhlasHyperLink=CType(e.Item.FindControl("lnkPic"),HyperLink)
  hl.Text=Path.GetFileNameWithoutExtension(DataBinder.Eval(e.Item.DataItem,"Name").ToString())&_
  "("&Int(DataBinder.Eval(e.Item.DataItem,"Length")/1000)&"KB)"
  hl.NavigateUrl="Default.aspx?N="&e.Item.ItemIndex
 EndIf
EndSub
</script>
<HTML>
<HEAD>
 <STYLETYPE="text/css">
  body{font-family:Verdana;font-size:medium;}
  .ImageTitle{font-weight:bold;font-size:large;}
  .index{font-size:small;}
  .NavLink{background-color:yellow;font-weight:bold;}
 </STYLE>
</HEAD>
<BODY>
<center>
<asp:Labelrunat="server"id="currentImgTitle"CssClass="ImageTitle"/><br/>
<asp:Imagerunat="server"id="currentImg"/>
<asp:HyperLinkrunat="server"CssClass="NavLink"id="lnkPrev"Text="<Previous"/>|
<asp:HyperLinkrunat="server"CssClass="NavLink"id="lnkNext"Text="Next>"/>
<asp:DataListrunat="server"id="dlIndex"OnItemDataBound="dlIndex_ItemDataBound"
RepeatColumns="3"CssClass="index">
<ItemTemplate>
<li><asp:HyperLinkrunat="server"id="lnkPic"/></li>
</ItemTemplate>
</asp:DataList>
</center>
</BODY>
</HTML>


实不相瞒,Java是我见过的执行效率最低的程序设计语言,前不久在CSDN论坛上有个评测,计算9999的阶乘,同样的循环算法,Java的耗时是.NET的5倍。
作者: admin    时间: 2015-1-17 11:54
CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。
作者: 深爱那片海    时间: 2015-1-20 17:57
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。
作者: 老尸    时间: 2015-1-29 13:49
这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。
作者: 若天明    时间: 2015-2-6 01:38
Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!
作者: 仓酷云    时间: 2015-2-14 20:33
Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。
作者: 谁可相欹    时间: 2015-3-4 10:22
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。
作者: 若相依    时间: 2015-3-11 18:16
同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。
作者: 不帅    时间: 2015-3-19 06:46
是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。
作者: 爱飞    时间: 2015-3-27 11:08
是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2