Tệp .aspx và aspx.cs đang được biên soạn như thế nào? nó sẽ là hai hội đồng hoặc cả hai tập tin này kết hợp một và sẽ được tạo ra như một hội? Có bất kỳ hệ thống phân cấp/kế thừa nào mà nó theo sau không? .aspx đang được tạo ra như một tập tin mã C# tương ứng (chỉ sau đó chúng ta có thể tạo ra một assembly đúng không? sửa tôi nếu tôi sai!) là một trong các tệp windows designer.cs?Cách aspx đang được biên soạn?
Trả lời
Tùy thuộc vào loại dự án. Với ASP. Net bạn có thể tạo hai loại dự án: Web Application Project and Web Site Project..
Tệp .aspx và aspx.cs đang được biên soạn như thế nào?
Với dự án Web Application
, bạn biên dịch mã đằng sau các tệp aspx
, điều khiển người dùng và mã khác được tìm thấy trong dự án này thành một dll duy nhất và triển khai nó trên máy chủ.
Với Web Site Project
bạn chỉ cần sao chép mã nguồn trên máy chủ và ASP .Net
sẽ xử lý việc biên dịch cho bạn. Dự án Trang web giữ mã nguồn của các lớp tùy chỉnh trong thư mục App_Code (bạn sẽ phải đọc thêm về các lớp này trên liên kết đó)
Nó sẽ là hai tập hợp hoặc cả hai tệp này kết hợp một và sẽ được tạo thành một hội,, tổ hợp?
Không có trường hợp nào trong số này, mã được tìm thấy trong các tệp aspx, ascx
không được bạn biên soạn (sử dụng Visual Studio, v.v.). ASP .Net
phân tích các tệp này và tạo một dll được lưu trữ trong thư mục tạm thời của nó. Các "aspx, ascx" dlls (nó có thể được nhiều hơn một duy nhất mặc dù) là các tập tin khác nhau hơn một trong những bạn tạo ra với Visual Studio (và tôi tin là khác với một được tạo ra từ App_Code thư mục, vì mã đó không thể mã truy cập được tìm thấy trong các trang).
Có bất kỳ cấu trúc phân cấp/kế thừa nào sau đó không?
Có. Khi một trang được phân tích cú pháp và biên dịch, lớp được tạo ra đó sẽ kế thừa một lớp có tên là thuộc tính "Inherits", được tìm thấy tại chỉ thị @Page.
<%@ Page Language="C#" CodeBehind="Default.aspx.cs"
Inherits="WebApplication1._Default" %>
ASP Net phân tích tập tin Default.aspx và tạo ra một lớp học mà được thừa hưởng WebApplication1._Default
public class default_aspx : global::WebApplication1._Default
{
}
Giving thực tế là các lớp được tạo ra từ ngữ đánh dấu được thừa hưởng một lớp được viết bởi chúng tôi (thường là một trong mã phía sau, tệp aspx.cs
), chúng tôi được tự do sử dụng các thành viên hoặc phương pháp của nó.
Các phương pháp sau đây là một phương pháp của lớp _Default:
protected string ToUpper(string source)
{
return source.ToUpper();
}
Sau đó trong đánh dấu chúng ta có thể gọi:
<form id="form1" runat="server">
<%= ToUpper("Microsoft") %>
</form>
Chúng tôi thậm chí có thể viết trong một cái gì đó đánh dấu như:
<% SomeValue = 1; %>
<%= SomeValue %>
Trường hợp SomeValue ít nhất là thuộc tính được bảo vệ của lớp _Default.
Chúng tôi đang miễn phí để khai báo các thành viên và viết mã máy chủ trong đánh dấu thêm:
<head runat="server">
<script runat="server" language="C#">
private int someCounter = 10;
</script>
</head>
<body>
<% for (var i = 0; i < someCounter; i++)
{ %>
<p>
Paragraph number:<%= i %>
</p>
<% } %>
</body>
</html>
Ở đây tôi tuyên bố một lĩnh vực someCounter
và sử dụng nó để viết 10 đoạn. Tất nhiên đây không phải là cách khuyến khích để làm những việc như vậy. Vì someCounter
là thành viên của lớp được tạo nên điều này không thể truy cập được ở mã phía sau.
Có một lợi thế lớn (và thực tế hơn) của kiến trúc này. Giả sử một số trang trong trang web là loại tĩnh (about.aspx, privacy.aspx, v.v.), chúng sử dụng cùng một trang chính. Mã phía sau trong các trang này không thay đổi. Điều này có nghĩa là chúng ta có thể tạo các trang khác và triển khai chúng mà không cần phải biên dịch mã nào khác (khía cạnh này áp dụng cho các dự án ứng dụng web). Ngoài ra, trước khi phát trực tiếp, chúng tôi có thể chỉ cho phép một người xem các trang này. Vì vậy, để đạt được điều này, chúng tôi tạo ra một lớp PreviewPage
public PreviewPage: System.Web.Page
{
public PreviewPage()
{
this.Load += (o, e) => {
// code here to see if the authenticated user has the right to see the page
// if not, redirect the user to another page
}
}
}
Và thay đổi giá trị Inherits
:
<%@ Page Language="C#" Inherits="WebApplication1.PreviewPage" %>
aspx đã được tạo ra như là một mã số tương ứng với C# tập tin
Các Language
thuộc tính trong @Page
chỉ thị ra lệnh ngôn ngữ nào được sử dụng để biên dịch tệp aspx/ascx
. Vì vậy, bạn thực sự có thể sử dụng VB.Net trong tập tin aspx và biên dịch trang web với trình biên dịch C#.
Đây là một trình biên dịch khác, khác với Visual Studio, nó được thực hiện với các tùy chọn khác nhau. Đây là lý do tại sao trong web.config có các tùy chọn để đặt compilationMode
thành Debug/Release
và cũng để hướng dẫn trình biên dịch sử dụng các tùy chọn có sẵn khác.
Khi một trang được phân tích cú pháp và biên dịch, lớp được tạo ra đó sẽ kế thừa một tên -> lớp được tạo có nghĩa là lớp aspx/ascx? – deen
Tôi muốn nói "có tên tại Inherits". Xin lỗi, như bạn có thể thấy, tiếng anh không phải là bản địa của tôi và tôi có rất nhiều thứ để học cách đánh vần/viết. Tôi đã thêm một ví dụ –
- 1. cmake biên soạn lỗi
- 2. Weird Mono biên soạn lỗi
- 3. Biên soạn nhiều tệp Ocaml
- 4. GHC: chèn ngày biên soạn
- 5. maven biên soạn - Lỗi log4j
- 6. php chạy của tôi được biên soạn như thế nào?
- 7. cảnh báo Biên soạn Bison
- 8. biên soạn gSoap với C++
- 9. generics java biên soạn lỗi
- 10. CoffeeScript không được biên soạn trong Play 2.1.0
- 11. Rắc rối biên soạn helloworld.cu
- 12. biên soạn opencv trong C++
- 13. lỗi biên soạn mẫu Thần
- 14. Lỗi Biên soạn CSS Asset
- 15. Hiểu nhầm cây biên soạn?
- 16. Biên soạn LaTex nguồn Yếm
- 17. gcc hiểu thời gian biên soạn được lấy
- 18. .Tiện ích mở rộng tệp không được biên soạn
- 19. Xác định ký tự Dòng mới cho môi trường chương trình C++ đang được biên soạn trên
- 20. Biên soạn có điều kiện tại Scala
- 21. Cross biên soạn FreeTDS cho iPhone
- 22. Biên soạn có điều kiện trong Go
- 23. Chạy biên soạn C++ với Rcpp
- 24. Thêm ngày biên soạn vào mã
- 25. Các vấn đề khi biên soạn pshtoolkit
- 26. Thêm "đang sử dụng" vào tập tin ASPX hoặc ASCX
- 27. Biên soạn SQLite cho Windows Phone 8
- 28. Làm cách nào để rút ngắn mã JavaScript được biên soạn từ Dart Editor?
- 29. Biên soạn bằng g ++ cho gprof
- 30. Binaries Biên soạn với Clozure Common Lisp
Tôi không thực sự hiểu câu hỏi, nhưng có thể http://odetocode.com/code/417.aspx và http://msdn.microsoft.com/en-us/library/015103yb(v= này vs.71) .aspx sẽ giúp bạn. –