2013-09-26 59 views
32

Vì vậy, tôi đang làm việc với dự án này giữa máy tính xách tay và máy tính để bàn của tôi.Tên không tồn tại trong ngữ cảnh hiện tại

Dự án hoạt động trên máy tính xách tay, nhưng bây giờ đã sao chép mã nguồn được cập nhật vào máy tính để bàn, tôi có hơn 500 lỗi trong dự án, tất cả chúng đều ...

Tên không tồn tại trong bối cảnh hiện nay

Dưới đây là một ví dụ ...

Jobs.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Members/Members.master" AutoEventWireup="true" CodeFile="Jobs.aspx.cs" Inherits="Members_Jobs" %> 

<%@ Register Namespace="AjaxControlToolkit" Assembly="AjaxControlToolkit" TagPrefix="aj" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> 
    <asp:UpdatePanel runat="server" ID="upJobs"> 
     <ContentTemplate> 
      <!-- page content goes here --> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
</asp:Content> 

Jobs.aspx.cs

public partial class Members_Jobs : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      loadJobs(); 
      gvItems.Visible = false; 
      loadComplexes(); 
      loadBusinesses(); 
      loadSubcontractors(); 
      loadInsurers(); 

      pnlCallback.Visible = false; 
      pnlInsurer.Visible = false; 
     } 
    } 

    // more goes down here 
} 

Dưới đây là một mẫu của các tập tin designer.cs ...

namespace stman.Members { 


    public partial class Jobs { 

     /// <summary> 
     /// upJobs control. 
     /// </summary> 
     /// <remarks> 
     /// Auto-generated field. 
     /// To modify move field declaration from designer file to code-behind file. 
     /// </remarks> 
     protected global::System.Web.UI.UpdatePanel upJobs; 
    } 
} 

Tôi biết lỗi này có nghĩa là kiểm soát được tham chiếu chung doesn' t tồn tại hoặc không phải là một phần của lớp học đang đề cập đến nó, nhưng theo như tôi thấy, đó không phải là trường hợp ở đây.

Có ai có thể cung cấp một số thông tin chi tiết không?

VS2012 Screenshot

+0

Bạn có thấy các biến mẫu trong tệp designer.cs không? – Serge

+0

Điểm trên thực tế, tôi không ... chỉ định nghĩa cho tất cả các điều khiển trên trang – Ortund

+1

Bạn sẽ có tệp Designer.cs.Xóa nó và tạo lại. – Bharadwaj

Trả lời

10

Jobs.aspx

Đây là phyiscal tập tin ->CodeFile="Jobs.aspx.cs"

Đây là lớp học mà xử lý các sự kiện của trang ->Inherits="Members_Jobs"

Jobs .aspx.cs

Đây là lớp phần trong đó quản lý các sự kiện trang ->public partial class Members_Jobs : System.Web.UI.Page

Các phần khác của một phần lớp nên ->public partial class Members_Jobs này thường là các tập tin được thiết kế riêng.

bạn không cần phải có các lớp học một phần và có thể khai báo các điều khiển của bạn tất cả trong 1 lớp và không có tệp thiết kế.

EDIT 27/09/2013 11:37

nếu bạn vẫn đang gặp vấn đề với điều này tôi sẽ làm như Bharadwaj gợi ý và xóa các tập tin được thiết kế riêng. Sau đó, bạn có thể nhấp chuột phải vào trang, trong trình khám phá giải pháp và có tùy chọn, như "Chuyển đổi sang ứng dụng web", sẽ tạo lại tệp thiết kế của bạn

+0

Tôi hiểu tất cả điều đó, nhưng vấn đề vẫn tồn tại. Vui lòng xem câu hỏi được cập nhật của tôi với ảnh chụp màn hình của tệp mã và trình thiết kế cạnh nhau – Ortund

+0

Cảm ơn Squirrel! Tôi không chắc chắn về cách tái tạo các tệp thiết kế ... Bạn có thể giải thích tại sao điều này cần thiết không? Ý tôi là ... Chuyện gì đã xảy ra với dự án? – Ortund

+0

@Ortund thành thật mà nói tôi không biết ... nếu mọi thứ được tham chiếu đúng cách và tất cả các điều khiển tồn tại, v.v ... nó sẽ hoạt động ... –

2

Tôi gặp phải vấn đề tương tự với thẻ meta .Trong designer.cs, kiểm soát được định nghĩa là:

protected global::System.Web.UI.HtmlControl.HtmlGenericControl metatag; 

tôi đã phải di chuyển các định nghĩa để các tập tin .aspx.cs và xác định như sau:

protected global::System.Web.UI.HtmlControl.HtmlMeta metatag; 
2

"Dự án hoạt động trên máy tính xách tay, nhưng bây giờ đã sao chép mã nguồn được cập nhật lên máy tính để bàn ... "

Tôi đã làm một điều tương tự, tạo hai phiên bản của một dự án và sao chép tệp giữa chúng. Nó đã cho tôi cùng một lỗi.

Giải pháp của tôi đã đi vào hồ sơ dự án, nơi mà tôi phát hiện ra rằng những gì đã nhìn như thế này:

<Compile Include="App_Code\Common\Pair.cs" /> 
<Compile Include="App_Code\Common\QueryCommand.cs" /> 

Bây giờ trông như thế này:

<Content Include="App_Code\Common\Pair.cs"> 
    <SubType>Code</SubType> 
</Content> 
<Content Include="App_Code\Common\QueryCommand.cs"> 
    <SubType>Code</SubType> 
</Content> 

Khi tôi thay đổi chúng trở lại, Visual Studio lại hạnh phúc.

+0

CÓ! Chỉ, những gì bạn nên đề cập, là nếu bạn nhấp vào các tệp lớp trong Solution Explorer và nhận các thuộc tính của chúng, bạn có thể chỉ cần thay đổi "Build Action" thành "Compile" và nó sẽ làm điều tương tự. Điều này thật tuyệt vời và đã giúp tôi khi tôi đang tạo một thư mục App_Code và bán phá giá trong mã của tôi, và không thể hiểu tại sao nó không được chọn lên các lớp. – vapcguy

2

Từ trang web MSDN:

Lỗi này thường xảy ra nếu bạn khai báo một biến trong một vòng lặp hoặc một thử hoặc nếu khối và sau đó cố gắng truy cập nó từ một mã số kèm theo khối hoặc một mã số riêng biệt khối.

Vì vậy, hãy khai báo biến bên ngoài khối.

6

Trong trường hợp ai đó là người mới bắt đầu đã thử tất cả những điều trên và vẫn không quản lý để làm cho dự án hoạt động. Kiểm tra không gian tên của bạn. Trong trường hợp bạn sao chép mã từ dự án này sang dự án khác và bạn quên thay đổi không gian tên của dự án thì nó cũng sẽ cung cấp cho bạn lỗi này.

Hy vọng nó sẽ giúp ai đó.

0

Tôi đã giải quyết lỗi bằng cách sử dụng Chỉ thị nhập theo chỉ thị Trang của tôi. Bạn cũng có thể muốn thêm không gian tên vào thuộc tính Inherits của chỉ thị Trang của bạn.

Kể từ khi nó xuất hiện mà không gian tên mặc định của bạn là "stman.Members", hãy thử: <%@ Page Title="" Language="C#" MasterPageFile="~/Members/Members.master" AutoEventWireup="true" CodeFile="Jobs.aspx.cs" Inherits="stman.Members.Members_Jobs" %> <%@ Import Namespace="stman.Members"%>

Ngoài ra, dữ liệu mà tôi muốn vượt qua giữa aspx.cs và aspx, tôi đặt bên trong một lớp tĩnh bên trong namespace . Lớp tĩnh đó có sẵn để di chuyển dữ liệu xung quanh trong không gian tên và không còn lỗi "không phải trong ngữ cảnh".

0

Tôi gặp sự cố này trong dự án chính của mình khi tôi tham chiếu tệp dll.

Vấn đề là dự án chính tham chiếu dll đã nhắm mục tiêu phiên bản khung thấp hơn so với dll.

Vì vậy, tôi đã tăng phiên bản khung mục tiêu của mình (Nhấp chuột phải vào dự án -> Ứng dụng -> Khung mục tiêu) và lỗi biến mất.

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