2015-03-30 56 views
0

我試圖從我的代碼後面編寫變量,但被告知「名稱'X'在當前上下文中不存在。」不能從後面的代碼訪問變量

當我搜索這個錯誤時,我發現他們應該在課堂上聲明爲公開或受保護,並且我已經這樣做了。

我嘗試Default.aspx中寫變量使用:

<%=metaRedirect%> 

<%#metaRedirect%> 

我default.aspx.cs如下:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace go 
{ 

    public partial class _default : System.Web.UI.Page 
    { 
     protected string message1 = ""; 
     protected string url = ""; 
     protected string shortCode = ""; 
     protected string jsRedirect = ""; 
     protected string metaRedirect = ""; 

     protected void Page_Load(object sender, EventArgs e) { 
      //do stuff 

    } 

} 

編輯:也試圖像這樣宣佈他們:

public partial class _default : System.Web.UI.Page 
    { 
     protected string message1 { get; set; } 
     protected string url { get; set; } 
     protected string shortCode { get; set; } 
     protected string jsRedirect { get; set; } 
     protected string metaRedirect { get; set; } 

沒有區別。

編輯2:是否有可能我從.aspx文件的第一行中丟失了一些東西?我有:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" %> 
+0

使它成爲公共財產 – 2015-03-30 18:09:28

+0

嘗試使它成爲一個屬性(添加'{get; set;}')而不是一個字段。 – 2015-03-30 18:10:23

+0

我也試過了。我會再做一遍,看看它是否有所作爲並更新。 – pr3sidentspence 2015-03-30 18:12:20

回答

2

聽起來像你的網頁沒有正確地連接到課堂上。確保您的頁面頁頭中有Inherits="go._default"

編輯編輯完成後,這絕對是您的問題。

此外,你可以絕對使用字段,如果你想要而不是屬性(但我總是推薦屬性),你可以使用保護而不是公共。事情不應該公開,除非你真的想從這個類或繼承鏈之外訪問它們。

0

當您使用綁定表達式,你需要調用在Page_Load Page.DataBind() ,使可變Public

public string metaRedirect { get; set; } 
protected void Page_Load(object sender, EventArgs e) 
{ 
metaRedirect="Hello World."; 
Page.DataBind(); 
} 

並嘗試:

<%#metaRedirect%> 

,或者你可以只需簡單地稱它爲

<%= metaRedirect%>