2010-07-19 84 views
20

Tôi là một người mới bắt đầu nên câu hỏi của tôi có thể xuất hiện vô lý .. Nhưng, tôi tự hỏi làm thế nào các tập tin .aspx.designer.cs hoạt động .. Đây là lần đầu tiên tôi làm việc với một giải pháp chứa các tệp .aspx .designer.cs cho mỗi trang. Vì vậy, tôi hiểu đó là lời tuyên bố của các điều khiển được sử dụng trong aspx cho code-behind ..aspx.designer.cs nó hoạt động như thế nào?

Dưới đây là câu hỏi của tôi:

Tại sao đôi khi giải pháp doen't có file .aspx.designer.cs? (là các tệp bị ẩn hoặc không tồn tại?)

Tôi thường gặp sự cố với tệp này, chúng không tự động tạo lại các khai báo kiểm soát khi tôi thêm một số mã .aspx, tôi đang làm gì sai?

Trả lời

25

Tệp .aspx.designer.xx là cầu nối cho tệp web-code ASP.NET phía sau và tệp đánh dấu .aspx. Bất kỳ điều khiển máy chủ nào hiện có trên trang đánh dấu aspx đều được trình bày ở đây. Quan trọng nhất là tên và loại điều khiển máy chủ.

Điều này, một phần, cho phép Visual Studio cung cấp cho người dùng IntelliSense trong trang mã sau cho điều khiển máy chủ được tạo tại thời điểm thiết kế.

Cách thức hoạt động: Visual Studio sẽ tạo hoặc đồng bộ hóa thành viên protected trong tệp .designer khi bạn thêm/xóa điều khiển máy chủ từ trình thiết kế.

protected global::System.Web.UI.WebControls.DropDownList DropDownList1; 

Lưu ý rằng các tệp .designer tạo partial class. Điều này cung cấp liên kết đến tệp mã-đằng sau. Đó là cách Intellisense lấy móc nối giữa .aspx và mã phía sau.

Bạn có thể tạo tập tin thiết kế của bạn: http://www.undermyhat.org/blog/2009/07/tip-regenerate-aspx-designer-cs-files-when-corrupted/

+0

Cảm ơn bạn đã trả lời nhưng Bạn có thể yêu cầu xây dựng lại tệp thiết kế cho một trang theo cách thủ công không? – bAN

+1

@ban: bạn đặt cược, dưới đây là cách tạo lại tệp thiết kế của bạn: http://www.undermyhat.org/blog/2009/07/tip-regenerate-aspx-designer-cs-files-when-corrupted/ –

18

Visual Studio có hai cách tiếp cận để tạo trang web: Dự án trang web và các dự án ứng dụng Web. (OK, OK, ba nếu bạn thêm MVC).

Chỉ các dự án ứng dụng web có tệp designer.cs. Dự án trang web không có chúng.

Web Loại dự án ứng dụng đã được bổ sung trong Visual Studio 2003.

+2

Đã trả lời câu hỏi của tôi, cảm ơn! – Nestor

0

Như p.campbell chỉ-out, các tập tin designer.cs liên kết các tập tin .aspx đến file .aspx.cs CodeBehind của nó. Không có tệp .designer.cs, mọi điều khiển trang .aspx trong tệp .aspx.cs CodeBehind sẽ trả về lỗi ", không tồn tại trong ngữ cảnh hiện tại". Liên kết trong .designer.cs được thực hiện dựa trên thuộc tính "Inherits" của chỉ thị @ Page trong tệp aspx cùng với không gian tên và lớp của tệp .Baspx.cs CodeBehind. Phân đoạn cuối cùng của thuộc tính "Inherits" phải khớp với lớp được định nghĩa trong cả tệp CodeBehind và tệp .designer.cs và các phân đoạn trước đó phải phù hợp với không gian tên của tệp .designer.cs và CodeBehind.

Ví dụ: myfile.aspx

<%@ Page Language="C#" 
    AutoEventWireup="true" 
    CodeBehind="myfile.aspx.cs" 
    Inherits="my.namespace.dot.classname" %> 

myfile.aspx.cs

namespace my.namespace.dot { 
    public partial class classname : Page { ... } 
} 

Lưu ý: các lớp tập CodeBehind phải kế thừa từ trang lớp, hoặc một số dẫn xuất của chúng.

myfile.designer.aspx.cs

namespace my.namespace.dot { 
    public partial class classname { ... } 
} 

Lưu ý: lớp designer.cs không quan tâm về thừa kế, chỉ là tên lớp phù hợp với CodeBehind và các tập tin .aspx.

Bạn có thể tạo một tập tin bị mất .designer như thế này (w3cgeek.com "Regenerate designer.cs '):

  1. Tạo, tập tin trống mới trong cùng một thư mục như .aspx và .aspx.cs của bạn tập tin có tên' myfile.aspx.designer.cs "trong đó" myfile "là tên của các tệp .aspx và .aspx.cs mà bạn muốn liên kết.
  2. Thêm vùng tên với một lớp trống vào tệp mới và đảm bảo tên của chúng khớp với không gian tên và lớp được chỉ định trong tệp .aspx và .aspx.cs mà bạn đang liên kết.
  3. Lưu tệp .designer.cs, thực hiện bất kỳ thay đổi nào đối với tệp .aspx (ví dụ: thêm dấu cách) và lưu tệp .aspx.

Visual Studio sẽ tự động điền tệp .designer.cs với tất cả mã cần thiết để liên kết tệp .aspx và CodeBehind của bạn. Các lỗi "không tồn tại trong bối cảnh hiện tại" bây giờ sẽ biến mất!

EDIT: Tôi đã thêm hướng dẫn .designer.cs vì liên kết đã chết mà ban đầu được đăng bởi p.campbell.

Các vấn đề liên quan