当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ASP.NET学习篇(3)——几个简单的ASP.ENT的例子

ASP.NET
使用函数传递参数来执行相应的数据库操作
如何实现在窗体和窗体之间进行传递数据
ASP.NET中文显示之两种解决方法
ASP.NET、JSP及PHP之间的抉择
ASP.NET 2.0发送电子邮件中存在的问题
谈谈HtmlControl与WebControl的区别与用途
从ASP.NET 1.1升级到ASP.NET 2.0要考虑的Cookie问题
通过系统配置来提高ASP.NET应用程序的稳定性
妙用ASP2.0中的URL映射改变网址
AJAX实现web页面中级联菜单的设计
ASP.NET跨页面传值技巧总结
再议ASP.NET DataGrid控件中的“添加新行”功能
Geometry 对象浅析
重构CollapsibleSplitter
如何利用.NET Framework使用RSS feed
ASP.NET获取IP与MAC地址的方法
在ASP.NET 2.0中使用样式、主题和皮肤
ASP.NET中为GridView添加删除提示框
ASP.NET 2.0,无刷新页面新境界
看看一个.net版对话框控件

ASP.NET学习篇(3)——几个简单的ASP.ENT的例子


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 36 ::
收藏到网摘: n/a

一个WEBFORM——这里将介绍ASP.NET WEBFORM的基本概念,以及其中表单项的变化。

*一个数据库的应用——如何利用CONFIG.WEB中设置的DNS连接数据库,数据库操作对象的一些基本用法。

*EMAIL发送——在 引入一个系统类库后(用IMPORT 标识符 ),利用msgMail对象,可以很方便的操作邮件发送过程。

*上传——<INPUT TYPE=FILE …… 这样一个INPUT 项在ASP.NET中有POSTEDFILE属性,结合SAVEAS 事件,就可以实现上传了。

一、 WEBFORM的使用

以上是用C#写的一个事件处理函数,void SubmitBtn_Click(Object sender , EventArgs e) , void代表该函数没有返回值,sender是事件中触发的对象,在这里就是button对象,e是触发事件的参数。该函数中的Message、Name、Category并没有定义,它们来自下面的代码:

以下为引用的内容:
    <form action="intro6.aspx" method="post" runat="server">
      <h3> Name: <asp:textbox id="Name" runat="server"/>
      Category: <asp:dropdownlist id="Category" runat=server>
             <asp:listitem>psychology</asp:listitem>
             <asp:listitem>business</asp:listitem>
             <asp:listitem>popular_comp</asp:listitem>
           </asp:dropdownlist>
      <asp:button type=submit text="Lookup" OnClick="SubmitBtn_Click" runat="server"/>
      <p>
      <asp:label id="Message" runat="server"/>
</form>

首先可以注意到表单的写法和html表单完全不同.所有的表单项包括表单本身后面都加上了runat=server,这一属性说明这是服务器端控制项,原先的文本输入,下拉菜单等的写法也变了。在这里采用的是:

<asp:<控件类别> id=[ID] 属性= runat="server"/>

控件的种类有很多(所有控件的列表可以附录中找到),各个控件的属性当然不一样,这会在今后详细介绍,上面的代码中,我们可以看见的有textbox、button的id、text属性,以及dropdownlist的SelectedItem属性(注意:这个属性只针对C#,在VB中,要用SelectedItem.Text属性来作为相应的代替)。

这里出现了一个服务器端控制<asp:label id=”Message” runat=”server”/>,这个asp:label是传统表单所没有的,它是一个服务器端文本控制,那么就存在一个问题,如果传统的HTML里没有这个元素,那么ASP+是怎么接收的呢?你运行一下这个程序,然后看一下HTML源码,你会发现这么一行:

<INPUT type="hidden" name="__VIEWSTATE" value="a0z-1715863018__x">

对,ASP+就是通过这个隐藏表单的形式传递过去的。另外,在提交后你可以发现在文本框中填写的内容,以及下拉菜单的选择都被保留下来了,这在ASP中需要代码来实现。

需要提出的一点,在ASP.NET中,还可以有另一种方式添加服务器端控件:

以下为引用的内容:
<script language="C#" runat=server>
void AddText(){
TextBox text1=new TextBox();
text1.Text="TEST";
……
}
</script>

这一段代码添加了一个TextBox控件。更多内容,可参看: 什么是ASP.NET的WEBFORM

二、一个数据库连接的例子

使用DNS连接,代码,说明

CONFIG.WEB 中的设置:

以下为引用的内容:

<appsettings>
<add key="MyConn" value="server=localhost;uid=sa;pwd=mypassword;
Database=somedatabase"/>
  </appsettings> 
**********************************************************
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SQL" %>
<script language="VB" runat="server">
Sub Page_Load(Src As Object, E As EventArgs)
Dim MyConnection As SQLConnection
‘SQLSERVER 的连接对象
Dim Config as HashTable
’定义一个本地变量
Config = Context.GetConfig("appsettings")
’用本地变量来保存DSN连接字符串变量
MyConnection = New SQLConnection(Config("MyConn"))
‘建立连接
Dim MyCommand As SQLCommand
’申明一个Command对象来往database中插入数据

dim parm1 as string = "SomeTextValue"
dim parm1 as string = "SomeTextValue2"

Dim InsertCmd As String = "Insert into tablename values (@parm1, @parm2)"

'Using the connection string
'使用连接字符串
MyCommand = New SQLCommand(InsertCmd, MyConnection)

MyCommand.Parameters.Add(New SQLParameter("@Parm1", SQLDataType.VarChar, 50))
MyCommand.Parameters("@Parm1").Value = Parm1

MyCommand.Parameters.Add(New SQLParameter("@Parm2", SQLDataType.VarChar, 50))
MyCommand.Parameters("@Parm2").Value = Parm2

MyCommand.ActiveConnection.Open()
MyCommand.Execute()
MyCommand.ActiveConnection.Close()

End Sub
</script>

在以上的代码中,在利用CONFIG.WEB中设置的DNS建立连接后,又用一个COMMAND 的对象完成了插入数据的操作.和从前的ADO没什么不同,只是对象名字有些改变。

三、一个发送邮件的例子

下面给出一段代码,非常容易的实现了发送一封HTML格式,带有附件的EMAIL。而不象ASP中需要自己编写组件来实现。

以下为引用的内容:
<% @Page Language="C#" %>
<% @Import Namespace="System.Web.Util" %>
<%
MailMessage msgMail = new MailMessage();
msgMail.To = "[email protected]";
msgMail.Cc = "[email protected]";
msgMail.From = "[email protected]";
msgMail.Subject = "Attachment ";
msgMail.BodyFormat = MailFormat.Html;
string strBody = "<b>here is an attachment</b>";
msgMail.Body = strBody;
msgMail.Attachments.Add(new MailAttachment("c:\\temp\\test.txt"));
SmtpMail.Send(msgMail);
Response.Write("Email 已经发送成功");
%>

上面的代码中,首先是引入System.Web.Util类库,这样才能调用MailMessage对象,有关它的属性的使用,上面的代码中已经很清楚了,要注意的地方有BodyFormat属性在为MailFormat.Html时,邮件正文是HTML格式,如果改为MailFormat.Text,则是文本格式,还有,请检查你的SMTP服务的设置,邮件发送需要它的支持。

四、一个上传的例子

ASP中上传文件需要自己写组件,代码,说明

以下为引用的内容:

<html>
  <script language="VB" runat=server>

   Sub UploadBtn_Click(Sender as Object, E as EventArgs)

     UploadFile.PostedFile.SaveAs(Server.MapPath("test.jpg"))
     MyImage.ImageUrl = "test.jpg"
     MyImage.Visible = true

   End Sub

  </script>

  <body>
   <form enctype="multipart/form-data" runat=server>
     <h3>
  Select File To Upload: <input id="UploadFile" type=file runat=server>
  <asp:button Text="Upload Me!" OnClick="UploadBtn_Click" runat=server/>

     <hr>

     <asp:image id="MyImage" Visible=false runat=server/>

   </form>
  </body>
</html>

直接调用UploadFile对象(它所在的类库是ASP.NET默认的,所以不用额外的 Import 一个 Namespace。)很容易的实现了上传,不用象在ASP中那样,要自己编写上传组件了。