2010-09-10 6 views
14

Thông thường khi xử lý Page_Load kiện được thêm vào một tập tin codebehind bởi Visual Studio (ví dụ như đôi cách nhấn vào trang trong chế độ thiết kế), nó sẽ trông như thế này:Resharper gợi ý Page_Load = PageLoad

/// <summary> 
/// Handles the Load event of the Page control. 
/// </summary> 
/// <param name="sender">The source of the event.</param> 
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> 
protected void Page_Load(object sender, EventArgs e) 
{ 
    // ... 
} 

Nhưng Resharper gợi ý Name 'Page_Load' does not match rule 'Methods, properties and events'. Suggested name is 'PageLoad'. Tôi đoán có một cách tốt hơn để xác định xử lý để tải trang, nhưng tôi không thể nhớ cú pháp là gì, nhưng tôi tưởng tượng nó sẽ giải quyết cảnh báo Resharper này?

Có lẽ cái gì đó như:

/// <summary> 
/// Raises the <see cref="E:System.Web.UI.Control.Load"/> event. 
/// </summary> 
/// <param name="e">The <see cref="T:System.EventArgs"/> object that contains the event data.</param> 
protected override void OnLoad(EventArgs e) 
{ 
    base.OnLoad(e); 
    // ... 
} 

nhưng tôi dường như nhớ lại rằng OnLoadPageLoad không giống hệt nhau?

Trả lời

8

OnLoadPage_Load về cơ bản giống nhau. Page_Load được gọi thông qua phản xạ nếu AutoEventWireup được bật trên Page. OnLoad là một phương thức ảo được bảo vệ của lớp Control (mà thừa hưởng lớp Page).

Xem Inside AutoEventWireup để có phân tích sâu về cách AutoEventWireup hoạt động và lý do tại sao nó tồn tại.

cộng đồng Các StackOverflow cũng có một số inputonwhetheritisbetter để xử lý các sự kiện Load hoặc ghi đè lên các phương pháp OnLoad.

+1

Đó là một liên kết hữu ích với giải thích tốt. cổ vũ. :) –

44

Chỉ cần cho đầy đủ tôi nghĩ tôi sẽ thêm ở đây là câu trả lời bạn nhận được từ một "David Benson" when you asked on jetbrains.net:

Nếu bạn đi đến ReSharper Options, dưới Ngôn ngữ chọn C# đặt tên Style. Chọn nút Cài đặt nâng cao ... và trong số Event subscriptions on fields:, xóa On trước $event$ để nó là $object$_$event$. Điều đó sẽ loại bỏ cảnh báo.

Đối với tôi, đây là cách dễ nhất để đặt giá trị ReSharper khi đối mặt với một cơ sở mã ứng dụng web lớn hiện có.

+2

IMHO, đây là câu trả lời đúng cho câu hỏi (+1 vì nó đã giúp tôi) –

+0

Tôi đồng ý. Đây là một giải pháp đơn giản cho vấn đề. Có vẻ như một lỗi trong R # với tôi rằng theo mặc định, nó sẽ không cảnh báo nếu bạn sử dụng Page_OnLoad. – comecme

+0

làm đẹp, vấn đề này đã khiến tôi nhớ nhiều tháng và tôi không bao giờ bận tâm tìm kiếm nó. Điều này sẽ loại bỏ các cảnh báo cho Page_Load Page_Init vv, nhưng giữ cảnh báo cho tất cả các cảnh báo khác một cách chính xác. Cảm ơn bạn! –

0

Đó là lỗi trong ReSharper 6.0 trở xuống. Trong 6.1 nó đã được sửa. Đối với các trình xử lý AutoEventWireup, nó sẽ không đề xuất bất kỳ thay đổi nào không quan trọng các cài đặt đặt tên bạn có.