无法从代码后面访问变量
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 或继承链之外访问它们。
我正在尝试从我的代码中写入变量,但我被告知 "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 或继承链之外访问它们。