无法从代码后面访问变量

Can't access variable from code behind

我正在尝试从我的代码中写入变量,但我被告知 "The name 'X' does not exist in the current context."

当我搜索这个错误时,我看到它们应该被声明为 public 或在 class 级别受到保护,我已经这样做了。

我尝试使用以下方法在 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" %>

当您使用绑定表达式时,您需要调用 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%>

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

编辑经过你的编辑,这肯定是你的问题。

此外,如果你愿意,你绝对可以使用字段而不是属性(但我总是推荐属性),并且你可以使用受保护而不是 public。事情不应该 public 除非你真的想从这个 class 或继承链之外访问它们。