2015-03-30 32 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%>