.NET的開發工具

開發工具
Microsoft Visual Studio.NET
以程式碼後置(CodeBehind)的概念將畫面與程式碼分離,以web form為例,aspx存放的是與畫面有關的html與server control,另外會產生一個同名的vb程式存放事件與邏輯

Form的配置:document的屬性pagelayout可有兩個值,flowlayout可以像寫asp一樣利用table繪製版面,gridlayout的話,有點像用layer

Microsoft ASP.NET Web Matrix
Web Matrix 是微軟完全以c#實作出來的Windows Form(Client-Side UI)的網頁程式IDE開發工具,雖然使用介面類似Visual Studio.NET但實際是以嵌入式(Embedded)的概念來表現,其程式碼與畫面放在同一個檔案內(CodeInline)。Web Matrix是一個”Community Project”,使用者可以透過線上社群的討論方式,針對感興趣的項目提出問題與回應。

Web Matrix與Visual Studio.NET尚有若干差異:
1. Web Matrix應用程式不是以專案型式開啟,檔案間各自獨立。
2. Web Matrix的程式撰寫區不提供Intellisense的屬性提示窗格。
3. Web Matrix檔案無法自動編譯成DLL,而須透過Command Line自行編譯。
4. Web Matrix IDE提供.NET Framework Class Library屬性查詢視窗與線上討論區連結。
5. Web Matrix程式免費下載與使用。

#develop
#develop (唸成「 Sharp Develop」) 是一套遵循GPL授權的自由軟體,可在微軟的.NET平台上編寫C#與VB.NET的程式

Borland C#Builder
Borland C#Builder

Mono
Mono 是一套.NET架構的開放原始碼發展平台,可讓軟體開發者以具生產力的方式輕易發展出跨平台的解決方案。
Mono’s .NET 實作了C#與CLR在 ECMA的標準(ECMA-334和ECMA-335)

ASP之傳值問題

如果在input為checkbox的value中傳超過個一個以上的值到另一頁,
[vb]
,< %=rs("Name")%>,< %=rs("Pay")%>“>
[/vb]
則在接收頁,要怎麼明確取得這些值呢?
方法是用陣列加迴圈
[vb]
Ary = split(Request(“xCheck”),”,”)

j =1 ‘每筆陣列內有幾項資料(a,b,c)
k=0 ‘跑每一筆資料的迴圈數(a(k))

For i=0 to ubound(Ary)
If j=3 then
k=i-2

EID = Trim(ARY(k))
Name = Trim(Ary(k+1))
Pay = Trim(Ary(k+2))

‘中間內容省略……….

j=0
end if
j=j+1
next
[/vb]

What is DataRelation??

在ASP.NET中對於資料的處理,
由於DataSet的出現,
使得資料間的關聯不再只依賴SQL的語法,
而可改用DataRelation.

DataRelation的用法,同關聯式資料庫,
意即二個不同的Table,用key(欄位)進行一對多的關聯.

在DataSet中可容納多個DataTable,
而這些DataTable就可以靠著DataRelation連繫在一起,
後續就可以藉著DataView OR DataReader把資料DataBind進去

語法如下:

Dim dr as DataRelation
Dim parentCol as Datacolumn
Dim childCol as DataColumn

parentCol = ds .tables(“customers”).columns(“customerID”)
childCol = ds.tables(“orders”).columns(“customerID”)
dr = New DataRelation(“custorders”,parentCol,childCol)
ds.Relations.Add(dr)

[轉帖]1小時asp入門,非常簡單

1小時ASP入門,非常簡單。

<%
   語句
   ……
%>

<2>定義變量dim語句

<%
  dim a,b
  a=10
  b=」ok!」
%>

注意:定義的變量可以是數值型,也可以是字符或者其他類型的
<3>簡單的控制流程語句
1.

If 條件1 then
     語句1
elseif 條件2 then
     語句2
else
     語句3
endif

2.

while 條件
   語句 
  wend

3.

for count=1 to n step m
  語句1
  exit for
  語句2
next 

二.ASP數據庫簡單*作教程
<1>.數據庫連接(用來單獨編製連接文件conn.asp)

<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\bbs\db1\user.mdb") 
%>

(用來連接bbs\db1\目錄下的user.mdb數據庫)
<2>顯示數據庫記錄
原理:將數據庫中的記錄一一顯示到客戶端瀏覽器,依次讀出數據庫中的每一條記錄
如果是從頭到尾:用循環並判斷指針是否到末 使用: not rs.eof
如果是從尾到頭:用循環並判斷指針是否到開始 使用:not rs.bof

            (包含conn.asp用來打開bbs\db1\目錄下的user.mdb數據庫)
        < %
         set rs=server.CreateObject("adodb.recordset")  (建立recordset對像)
         sqlstr="select * from message"  ---->(message為數據庫中的一個數據表,即你要顯示的數據所存放的數據表)
         rs.open sqlstr,conn,1,3         ---->(表示打開數據庫的方式)
         rs.movefirst                    ---->(將指針移到第一條記錄)
         while not rs.eof                ---->(判斷指針是否到末尾)
         response.write(rs("name"))      ---->(顯示數據表message中的name字段)
         rs.movenext                     ---->(將指針移動到下一條記錄)
         wend                            ---->(循環結束)
------------------------------------------------------         
         rs.close
         conn.close                    這幾句是用來關閉數據庫
         set rs=nothing
         set conn=nothing
-------------------------------------------------------
        %>

其中response對象是服務器向客戶端瀏覽器發送的信息
<3>增加數據庫記錄
增加數據庫記錄用到rs.addnew,rs.update兩個函數

  
            (包含conn.asp用來打開bbs\db1\目錄下的user.mdb數據庫)
        < %
         set rs=server.CreateObject("adodb.recordset")  (建立recordset對像)
         sqlstr="select * from message"  ---->(message為數據庫中的一個數據表,即你要顯示的數據所存放的數據表)
         rs.open sqlstr,conn,1,3         ---->(表示打開數據庫的方式)
         rs.addnew                      新增加一條記錄
         rs("name")="xx"                將xx的值傳給name字段
         rs.update                      刷新數據庫 
------------------------------------------------------         
         rs.close
         conn.close                    這幾句是用來關閉數據庫
         set rs=nothing
         set conn=nothing
-------------------------------------------------------          
                    
        %>

<4>刪除一條記錄
刪除數據庫記錄主要用到rs.delete,rs.update

       (包含conn.asp用來打開bbs\db1\目錄下的user.mdb數據庫)
        < %
         dim name
         name="xx"
         set rs=server.CreateObject("adodb.recordset")  (建立recordset對像)
         sqlstr="select * from message"  ---->(message為數據庫中的一個數據表,即你要顯示的數據所存放的數據表)
         rs.open sqlstr,conn,1,3         ---->(表示打開數據庫的方式)
-------------------------------------------------------       
         while not rs.eof
          if rs.("name")=name then
           rs.delete
           rs.update             查詢數據表中的name字段的值是否等於變量name的值"xx",如果符合就執行刪除,
          else                   否則繼續查詢,直到指針到末尾為止
           rs.movenext
          emd if
         wend
------------------------------------------------------
------------------------------------------------------         
         rs.close
         conn.close                    這幾句是用來關閉數據庫
         set rs=nothing
         set conn=nothing
------------------------------------------------------- 
        %>

<5>關於數據庫的查詢
(a) 查詢字段為字符型

      < %
      dim user,pass,qq,mail,message
      user=request.Form("user")
      pass=request.Form("pass")
      qq=request.Form("qq")
      mail=request.Form("mail")
      message=request.Form("message")
      if trim(user)&"x"="x" or trim(pass)&"x"="x" then     (檢測user值和pass值是否為空,可以檢測到空格)
        response.write("註冊信息不能為空")
      else
      set rs=server.CreateObject("adodb.recordset")
      sqlstr="select * from user where user='"&user&"'"    (查詢user數據表中的user字段其中user字段為字符型)
      rs.open sqlstr,conn,1,3
      if  rs.eof then
        rs.addnew
        rs("user")=user
        rs("pass")=pass
        rs("qq")=qq
        rs("mail")=mail
        rs("message")=message
        rs.update
        rs.close
        conn.close
        set rs=nothing
        set conn=nothing
        response.write("註冊成功")
       end if 
      rs.close
      conn.close
      set rs=nothing
      set conn=nothing
      response.write("註冊重名")
     %>

(b)查詢字段為數字型

     < %
      dim num
      num=request.Form("num")
      set rs=server.CreateObject("adodb.recordset")
      sqlstr="select * from message where id="&num   (查詢message數據表中id字段的值是否與num相等,其中id為數字型)
      rs.open sqlstr,conn,1,3
      if not rs.eof then
      rs.delete
      rs.update
      rs.close
      conn.close
      set rs=nothing
      set conn=nothing
      response.write("刪除成功")
      end if
      rs.close
      conn.close
      set rs=nothing
      set conn=nothing
      response.write("刪除失敗")
     %>

<6>幾個簡單的asp對象的講解
response對像:服務器端向客戶端發送的信息對像,包括直接發送信息給瀏覽器,重新定向URL,或設置cookie值
request對像:客戶端向服務器提出的請求
session對像:作為一個全局變量,在整個站點都生效
server對像:提供對服務器上方法和屬性的訪問
(a) response對象的一般使用方法
比如:

       < %
        resposne.write("hello, welcome to asp!")
       %>
    在客戶端瀏覽器就會看到  hello, welcome to asp! 這一段文字
      < %
response.Redirect("www.sohu.com")
      %>

如果執行這一段,則瀏覽器就會自動連接到 「搜狐」 的網址
關於response對象的用法還有很多,大家可以研究研究
request對象的一般使用方法
比如客戶端向服務器提出的請求就是通過request對像來傳遞的
列如 :你在申請郵箱的所填寫的個人信息就是通過該對像來將
你所填寫的信息傳遞給服務器的
比如:這是一段表單的代碼,這是提供給客戶填寫信息的,填寫完了按
「提交」傳遞給request.asp文件處理後再存入服務器數據庫

    

那麼request.asp該如何將其中的信息讀入,在寫入數據庫,在這裡就要用到
request對象了,下面我們就來分析request.asp的寫法

< %
dim name,password    (定義user和password兩個變量)
name=request.form(「user」)  (將表單中的user信息傳給變量name)
password=request.form(「pass」) (將表單中的pass信息傳給變量password)
%> 

通過以上的幾句代碼我們就將表單中的數據讀進來了,接下來我們要做的就是將
信息寫入數據庫了,寫入數據庫的方法上面都介紹了,這裡就不一一複述了。
(通過上面的學習大家完全可以自己做一個留言版了)

NET的user control

今天上課上到有關user control,

它類似asp時的include,但功能更加強大,

可以把UI介面整個帶入,

加上動態載入user control,

就能用這來寫權限判斷了

不同的登入者,可看到不同的user control,

解決了我之前只會用

Button1.Enabled = True或Button1.Enabled = False的爛方法