无法从代码后面访问变量

时间:2015-03-30 18:08:49

标签: c# asp.net code-behind

我试图从我的代码中编写变量,但我被告知"名称' 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" %>

2 个答案:

答案 0 :(得分:2)

听起来您的页面没有正确地连接到班级。确保您的aspx页面中的页眉中有Inherits="go._default"

编辑编辑完成后,这绝对是您的问题。

此外,如果您需要而不是属性(但我总是推荐属性),您肯定可以使用字段,并且您可以使用protected而不是public。除非你真的想从这个类或继承链之外访问它们,否则事情不应该是公开的。

答案 1 :(得分:0)

在使用绑定表达式时,您需要调用Page.DataBind() 在page_load中并生成变量Public

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

尝试:

<%#metaRedirect%>

或者你可以简单地称之为

<%= metaRedirect%>