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

ASP.NET
赫赫大名的A*寻路算法(vb.net版本)
asp.net(c#)下Jmai去说明 使用与下载
[原创]完美解决Could not load file or assembly ''AjaxPro.2'' or one of its dependencies. 拒绝访问。
asp.net下gridview 批量删除的实现方法
用CSS实现图片倾斜 只支持IE
.net get set用法小结
vs 不显示行号的操作方法
ASP.NET页面进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)
ASP.Net不执行问题一解
asp.net 无限分类
让VS2008对JQuery语法的智能感知更完美一点
扩展方法ToJSON() and ParseJSON()
asp.net下PageMethods使用技巧
Linq to SQL Delete时遇到问题的解决方法
实现ASP.NET多文件上传程序代码
ASP.NET AJAX 1.0 RC开发10分钟图解
asp.net get set用法
ASP.NET下使用WScript.Shell执行命令
asp.net2.0实现邮件发送(测试成功)
Asp.net 无限级分类实例代码

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 56 ::
收藏到网摘: 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中那样,要自己编写上传组件了。