2011-03-05 47 views
13

Tôi đang đối mặt với một vấn đề lớn nhỏ. Tôi đã thực hiện điều khiển dropdownList và ID là "drpDownCountries "trong dự án ASP.Net. Vấn đề là" Kiểm soát danh sách thả xuống được đặt trên trang, trong mã phía sau tệp C#, trong khi nhập tên kiểm soát "drpDownCountries", ID kiểm soát này được liệt kê trong danh sách thành viên đối tượng. Nhưng, khi biên dịch dự án tôi nhận được lỗi sau.asp.Net <control> không tồn tại trong ngữ cảnh hiện tại

Lỗi: - Tên 'drpDownCountries' không tồn tại trong ngữ cảnh hiện tại.

Tôi cũng đã kiểm tra điều này trên các máy khác nhau. Nhưng cùng một lỗi xảy ra. Tôi không hiểu lý do đằng sau điều đó là gì.

+1

Bạn có thể cung cấp mã nơi xảy ra lỗi không ? –

+0

** drpDownCountries.Attributes.Add ("onBlur", "ErrorHighlight ('" + drpDownCountries.ClientID + "', '" + lblCountry.ClientID + "');"); ** Đây là mã, trên đó tôi đang gặp lỗi. – Kamlesh

+1

kiểm tra điều này: http://stackoverflow.com/questions/706603/the-name-controlname-does-not-exist-in-the-current-context câu trả lời này: "Kiểm tra mã của bạn phía sau tên tệp và Inherits thuộc tính trên @Page chỉ thị, đảm bảo cả hai đều khớp nhau. " – Alexan

Trả lời

1

Có thể có lỗi trong tệp aspx/aspx khiến tệp thiết kế không được cập nhật chính xác. Bạn có thể xác nhận điều này bằng cách thêm một cái gì đó mới (ví dụ: "") và xem bạn có thể truy cập điều đó không. Nếu không, một cái gì đó có thể bị hỏng trong đánh dấu mà bạn sẽ cần phải sửa chữa.

+0

Cảm ơn, nhưng bạn biết tôi đã kiểm tra những thứ giống nhau trên các máy khác nhau. Nhưng tôi cũng có được những trải nghiệm tương tự. – Kamlesh

+1

Nếu có điều gì đó sai trong aspx/ascx của bạn, chắc chắn nó sẽ bị hỏng trên các máy khác? –

+0

Điều này áp dụng cho tôi, tôi có 2 div được đánh dấu runat = "server" có cùng tên, nhưng ngay cả khi đã được nhận xét trong tệp ascx, nó đã âm thầm gây ra lỗi và dừng tệp ascx.designer.cs được cập nhật tự động. Tôi đổi tên các div trong câu hỏi, sau đó tôi nhấp chuột phải vào điều khiển và chọn "Chuyển đổi sang ứng dụng web" và sửa nó. –

20

Nhấp chuột phải vào tệp ASPX (hoặc ascx) và chọn Chuyển đổi thành ứng dụng web (hoặc điều gì đó tương tự). Điều đó sẽ buộc làm mới trên tệp thiết kế.

+3

Điều này đã giúp tôi, nhưng trước tiên tôi phải xóa tệp thiết kế. cảm ơn! – programmer

+1

bạn không biết mình đã dành bao lâu cho việc này - cảm ơn kprobst! – stuck

+0

+1 cho văn bản in đậm! – Mogipogi

9

Tôi đã thấy lỗi này xảy ra khi có bản sao của trang .aspx trong thư mục dự án.

Ví dụ:

Lỗi xảy ra trong Test.aspx.

Có tệp Test-copy.aspx trong thư mục dự án.

Xóa, đổi tên bằng tiện ích mở rộng khác hoặc di chuyển Test-copy.aspx sang một thư mục khác.

Lỗi được giải quyết.

+0

Tôi sử dụng Google Drive để đồng bộ hóa các tệp giữa các máy tính. Tôi nghĩ rằng nó đặt một tập tin trong đó gọi là FileName [xung đột] .aspx do tai nạn. Tôi đã sao lưu tệp đó và xóa tệp đó để có biện pháp tốt và mọi thứ giờ đây đều tốt đẹp. Một điều đơn giản mà tôi đáng lẽ phải bắt được nhưng không. –

0

Bạn nên đặt một số mã để có được sự giúp đỡ ..

Dù sao, vấn đề có thể là drpDownCountries được chứa trong một điều khiển Bảng điều chỉnh.

Điều khiển bảng điều khiển là điều khiển vùng chứa, ở chỗ nó có thể chứa nhiều điều khiển .
Để truy cập các điều khiển trong bảng điều khiển đó, trước tiên bạn cần "trợ giúp" ASP.Net để tìm nó.

Cách điển hình để thực hiện việc này là sử dụng phương pháp FindControl look here.

mẫu Mã số:

DropDownList myDrop = (DropDownList)this.Panel1.FindControl("drpDownCountries"); 
if(myDrop != null) 
    { 
    ..somecode.. 
    } 
10

Tôi có vấn đề này cùng và thử tất cả các câu trả lời được liệt kê ở đây, không có kết quả.

Điều cuối cùng làm việc cho tôi là thực hiện thay đổi đối với tệp ascx trong dạng xem thiết kế và sau đó lưu.Cuối cùng, buộc Visual Studio tạo lại tệp designer.cs và bao gồm điều khiển mới của tôi.

+0

Nhấp qua lại để xem thiết kế cuối cùng có thời gian chạy để xem điều khiển. – DOK

+0

Tuyệt vời, Điều đó đã khắc phục được sự cố của tôi;) –

0

Điều duy nhất làm việc cho tôi là thêm bộ điều khiển tạm thời vào tệp aspx và lưu nó. Điều đó tạo ra các nhà thiết kế một lần nữa, và bộ điều khiển của tôi bây giờ được công nhận! Tôi rất tự hào. Sau đó bạn có thể loại bỏ bộ điều khiển tạm thời và lưu lại, nó sẽ không làm hỏng bất cứ thứ gì, bạn sợ mèo!

+0

Tôi đang ở trên VS 2012. Và trên một con ngựa. –

0

Tạo lại dự án. Chỉ cần tạo một dự án mới và thêm từng phần tử một và hy vọng nó sẽ không xảy ra nữa. Nếu có, đó là một phần của trải nghiệm Microsoft: tạo lại một dự án khác và tiếp tục, cho đến khi bạn quyết định bỏ công việc của mình và tham gia vào nguồn mở.

SỬA CHỮA

Tôi sẽ làm lại dự án mà tôi đã được làm việc trên kể từ 3 ngày qua sử dụng ASP NET MVC. Tôi nên sử dụng một công nghệ mã nguồn mở chắc chắn, nhưng quá tệ nó không phải là quyết định của tôi cho dự án này để không sử dụng .NET.

1

séc Vì vậy, đầu tiên mà tài liệu ascx của bạn được định nghĩa như vậy

ExampleClass.ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ExampleClass.ascx.cs" Inherits="ExampleClass" %> 

ExampleClass.ascx.cs

public partial class ExampleClass : System.Web.UI.UserControl 
{ 
    protected void Page_Load(object sender, System.EventArgs e) 
    { 

    } 
} 
0

Trong aspx loại lỗi thường xảy ra khi bạn bỏ lỡ runat="server"

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