PDA

View Full Version : Include trong ASP.NET



nquocbao
14-08-2005, 12:15
CHo hỏi có cách nào include như PHP trong ASP.NET ko dzậy :(

thienthan36
14-08-2005, 13:03
Bạn ơi, nếu bạn viết bằng asp.net thì nó không hỗ trợ include giống như php hay asp đâu mà nếu như bạn tạo một cái class hay namespace hay một Lb thì bạn phải sử dụng nó bằng lệnh imports ( vb.net ) hay using (c#) thôi bạn à. cái này rất là hay đấy. có thể nói cái này là một bước phát triển nến bận nhận ra hết những tính năng của câu lệnh này

nquocbao
14-08-2005, 13:34
Vấn đề là mình dùng codebehind theo kiểu src= :(, ko biết include 1 file chứa các hàm thông dụng vào thế nào :(

thienthan36
14-08-2005, 13:50
cái tính chất codebehind là dùng để ấn định trang mã nguồn của trang bạn đang viết thôi. nếu như bạn có một class chứa những hàm thông dụng thì bạn hãy imports hay using
ví dụ
using app.tinhtoan.hamtoan;

thế là những hàm thông dụng của bạn viết sẽ được sử dụng

nquocbao
14-08-2005, 14:05
VD thế này

mình có common.cs chứa các hàm connect db

mình muốn include các hàm này lại để dùng cho các file khác

vậy làm sao ?

thienthan36
14-08-2005, 14:31
Cái lợi khi bạn sử dụng câu lệnh imports hay using là bạn có thể truy cập bất cũng những class nào mà bạn thiết kế, nếu những hàm mà bạn viết để truy cập vào db trong common.cs thì bạn hãy using Namespace vào trang mã nguồn của bạn, nếu bạn viết những hàm truy cập dữ liệu của bạn chứa trong một class của trang common.cs. thì bạn có thể khai báo nó vào trong biến nào đấy và có thể sử dụng nó ở bất kì đâu. bạn có thể khai báo toàn cục những biến này trong global.cs và có thể sử dụng nó ở bất kì đâu trong ứng dụng web của bạn.

nquocbao
14-08-2005, 17:53
Vấn đề là mình ko include các func để dùng , chứ ko phải biến

Zero
15-08-2005, 09:45
Hình như vẫn có thể dùng <!-- #include file="filename"--> bình thường.

Tuy nhiên vấn đề ở đây là : đấy kô phải cách lập trình của .NET ^^, tớ có cảm giác bạn quen lập trình theo kiểu của PHP4 (no OOP rite?)

.NET bạn có thể add 1 class dùng để thao tác db rồi sử dụng class đó lại 1 cách bt (nếu cùng namespace) hoặc using hay import để dùng (nếu khác namespace)

nowforever
15-08-2005, 11:01
Cách viết của bạn ko dc OOP lắm. Tôi nghĩ bạn nên design lại.
Còn chuyện sử dụng lại các hàm thì ko có vấn đề gì. nếu là public static (c#) hoặc Shared (VB.NET) thì bạn có thể gọi trực tiếp : TênNamspace.Class.tên hàm. Còn nếu ko thì bạn phải tạo đối tượng thì sẽ sử dụng dc thôi.
Lời cuối : Nên dùng code behind để tách Implementation ra khỏi Presentation. Đừng bỏ lung tung, đây là điều bất kỳ ngôn ngữ lập trình nào cũng hướng tới.

nquocbao
15-08-2005, 13:09
Ở đây ko phải OOP hay ko OOP , mình dùng theo kiểu object , và mình muốn sữ dụng các object mình đã define trong một file khác .

Chẳng hạn như VD trên
Mình có 2 form , 1 form là show ra data , 1 form là submit data . Cả 2 đều connect đến CSDL , và mình để các hàm liên quan đến CSDL sang một file cs khác (vẫn nằm trong NameSpace đó , chỉ để ở file khác thôi) , và mình muốn dùng các hàm , object trong file này chung cho cả 2 form .Nếu mình compile ra Assembly thì mọi thứ đều ok , nhưng mình muốn codebehind theo kiểu src= kìa

thuyendevelop
15-08-2005, 13:55
Ở đây ko phải OOP hay ko OOP , mình dùng theo kiểu object , và mình muốn sữ dụng các object mình đã define trong một file khác .

Chẳng hạn như VD trên
Mình có 2 form , 1 form là show ra data , 1 form là submit data . Cả 2 đều connect đến CSDL , và mình để các hàm liên quan đến CSDL sang một file cs khác (vẫn nằm trong NameSpace đó , chỉ để ở file khác thôi) , và mình muốn dùng các hàm , object trong file này chung cho cả 2 form .Nếu mình compile ra Assembly thì mọi thứ đều ok , nhưng mình muốn codebehind theo kiểu src= kìa

codebehind theo kiểu SRC=???Là kiểu code gì vậy bạn ???Sao nghe lạ vậy???Nói thật là bạn nói cài gì thế???Hiểu chết liền đó!

nquocbao
15-08-2005, 15:04
Ặc sao .... thế :(



<%@ Page language="c#" codebehind="index.aspx.cs" AutoEventWireup="false" Inherits="GuestBook.WebForm1" %>

Codebehind cần phải compile code thành thư viện assembly



<%@ Page language="c#" src="index.aspx.cs" AutoEventWireup="false" Inherits="GuestBook.WebForm1" %>

Codebehind ko cần compile thành thư viện , mà dùng source

HITALF
15-08-2005, 15:34
Theo mình thì ngquocbao muốn nói về trường hợp "nối code" bằng "include" của PHP phải ko? Ví dụ như có 2 file. File thứ 1 chứa nội dung là "abc" và file thứ 2 co nội dung là "def". File thứ 3 chỉ cần include 2 files trên thì sẽ có nội dung là "abcdef" + nội dung riêng của file thứ 3.
Trong .NET nếu để làm việc này thì bạn có thể dùng 1 trong 2 cách sau:
Cách thứ 1: là bạn complie đoạn code thành file .dll và add vào trong project và sử dụng các functions trong file .dll này. Nếu muốn bạn có thể include các class trong file .dll này ở đầu trang web bạn muốn sử dụng để tiện cho việc gọi hàm.
Cách thứ 2: bạn không cần compile mà chỉ add file .cs vào trong project và gọi các lệnh trong file .cs này ra để xài.
Note: Ở cả trong 2 cách bạn cần phải lưu ý là bạn phải tạo hàm (functions) là static public nha, nếu không sẽ không access tới được đâu.

nquocbao
15-08-2005, 15:53
Phù , cuối cùng thì cũng có ngừơi hiểu

Nhưng ở đây ko phải là nội dung , nếu là nội dung thì dùng <!-- #include file= --> cho đở mệt >__< .

Cách 1 thì ko bàn , vì mình muốn ko dùng thư viện assembly (mặc dù nó sẽ rất nhanh hơn so với cái mình đang đề cập )

Cách thừ 2 , add vào project , Debug => ok ( tại vì nó cũng đi về cách 1 ) , nhưng khi public ra thì error

HITALF
15-08-2005, 16:26
bạn nói public có nghĩa là khi access vào virtual directory ví dụ như http://localhost/MyASPDotNet chứ gì. Nhưng nếu access qua virtual directory (application folder) thì file .cs đã được compile luôn rồi, đúng không?
Và bạn muốn access qua một folder thường thôi chứ gì?
Hic...vụ này mới à nhen...mình thì mình không nghĩ là làm được tại vì ASP .NET dùng code của C# mà muốn có thể hiểu được thì chắc chắn là phải qua compile --> hic...bó tay
Nếu bạn làm được chuyện này thì chỉ mình với nha!

Zero
15-08-2005, 16:33
code behind chỉ là 1 property thêm vào của VS IDE chứ bản thân ASP.NET kô xử lý property đó, nó hoàn toàn dựa vào Inherits = của bạn. Cơ chế xử lý của ASP.NET Engine khá lằng nhằng - dựa vào file aspx nó sẽ tạo ra 1 file .cs tương ứng compile laik rùi chạy ... : )

Nếu bạn có obj muốn share bạn có thể share qua biến Application hoặc Cache tùy. Tuy nhiên cần nắm rõ quá trình chạy của 1 trang ASP.NET.

Thực ra thì bạn cần share obj nào ? :-/ nếu là share connection thì kô nên share (vì là connection pool, dùng xong trả lun là chuẩn nhất)

nquocbao
16-08-2005, 15:14
VD , mình có hàm mã hóa (đừng kêu mình dùng NameSpace Security nha) , bây giờ hầu hết các trang đều dùng hàm này , mình ko muốn compile ra Assembly ,bây giờ làm sao include hàm này vào bây giờ (đừng có nói mỗi form viết lại hàm này :">)

Zero
16-08-2005, 21:46
:-/

Nếu là mình thì mình sẽ làm thế này



namespace Zero.MyCryptography; // ^^

public class MyMD5
{
public static byte [] encrypt (byte [] in)
{
return "Encrypted data";
}
}


Để dùng hàm encrypt này bạn chỉ cần



using Zero.MyCryptography;

MyMD5.encrypt ("something");


Tất nhiên cách trên sẽ compile ra dll nhưng tớ kô hỉu tại sao bạn kô muốn compile ra dll ??

nquocbao
16-08-2005, 22:13
Mình đang muốn hiểu , coi ko dùng DLL thì ASPX có hiểu được các file khác hay ko :( , xem ra ko được rồi

Mà nghe nói có page directive @assembly gì đó , giống như include code , nhưng trong codebehind ko hiểu , còn inlinecode thì ok

Zero
16-08-2005, 22:25
tớ thì hoàn toàn thoả mãn với những j aspx.net có ^^ mà dù bạn làm j kết quả chạy cuối cùng vẫn là dll mà có j khác đâu : )

phamvantuanhd
29-08-2005, 21:02
Minh thay moi nguoi deu hieu sai van de roi do, ban nquocbao hoi voi noi dung nhu sau:
+ Gia su toi co mot file co ten la file1.aspx va mot file co ten la file2.aspx
+ Trong trang file3.aspx co doan code nhu sau (voi n la mot bien thuoc integer)

Select Case n
Case 1:
<!--#Include file="file1.aspx">
Case 2:
<!--#Include file="file2.aspx">
End select

Cac ban noi xem de lam duoc nhu vay thi lam the nao? Co can phai them khai bao <%@ Register ....%> hay khong?

nquocbao
29-08-2005, 21:14
Cái đó là include HTML , ko include code >:D<

honhutlinh
18-05-2008, 21:56
chào các bác mong các bác chỉ giúp mình cách kết nối csdl với sqlserver 2000 trong asp.net với cảm ơn nhiều!!!

gianhut
18-05-2008, 22:10
Zero đã cho chỉ cho bạn qua rõ ràng rồi. mà hình như là bạn có cái common.cs trong cùng project, nếu cùng namespace thì đâu có cần include. cứ Common.gì_gì_đó. còn nếu khác name space thì using Namespace_Của_Bạn

[L]at
19-05-2008, 00:23
Ai nói trong asp.net ko có file dạng như include trong asp classic
Bạn có thể tạo thêm file User Control rồi register trong trang aspx bên HTML
Nó tương tự như bạn ghép code trong asp ấy