Có một sự khác biệt tinh tế trong file .aspx mà bạn sẽ tìm thấy trong các loại dự án.
Nếu bạn nhìn vào một dự án trang web bạn sẽ thấy một cái gì đó như thế này ...
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>
... nơi như các dự án ứng dụng Web sẽ có các file .aspx với một cái gì đó như thế này ...
<%@ Page Language="C#" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" %>
Lưu ý rằng thuộc tính đầu tiên có thuộc tính CodeFile và thuộc tính thứ hai là thuộc tính CodeBehind. Đây là nơi phân biệt được thực hiện.
Thuộc tính CodeBehind KHÔNG được sử dụng trong thời gian chạy - nó có để nói cho VS.NET biết mã ở đâu và thuộc tính Inherits cho biết thời gian chạy lớp nào sẽ tìm kiếm trong tệp nhị phân.
Thuộc tính CodeFile IS sử dụng trong thời gian chạy, và được sử dụng bởi aspnet_compiler.exe để tạo ra mã, và sau đó là thuộc tính Inherits được sử dụng như trên.
Để biết thêm về những thuộc tính này, nhìn ở đây ...
http://msdn.microsoft.com/en-us/library/ydy4x04a.aspx
Nhưng để trả lời câu hỏi của bạn "như thế nào IIS biết?" câu trả lời là "nó không." ASP.NET biết.
Bạn có thể chứng minh rằng đây là trường hợp bằng cách làm như sau:
- Tạo một ứng dụng web mới. Điều này sẽ bao gồm một Default.aspx và một Default.aspx.cs.
Thêm đoạn mã sau vào Default.aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("hello");
}
Biên dịch dự án, chạy nó, thấy văn bản "hello" xuất hiện trong trình duyệt.
Bây giờ, thay đổi mã để nó trông như thế này, và lưu cs file:
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("goodbye");
}
không biên dịch. Làm mới trình duyệt của bạn. Bạn vẫn sẽ thấy "hello" vì mã được biên dịch vẫn sử dụng chuỗi này.
Bây giờ, thay đổi người nhận trong Default.aspx từ CodeBehind thành CodeFile. Lưu tệp này.
Làm mới trình duyệt của bạn. Bạn sẽ thấy "tạm biệt" hiển thị.
Thay đổi "tạm biệt" trong mã của bạn thành "Tôi tin!". Lưu tệp .aspx.cs nhưng không biên dịch.
Refresh trình duyệt của bạn, xem "Tôi tin!", Và nhảy múa quanh phòng enlightend :-)
Nguồn
2009-05-07 21:00:34
Daren nếu bạn muốn biết bỏ phiếu lên câu hỏi –