【问题标题】:Can't access variable from code behind无法从后面的代码访问变量
【发布时间】:2015-03-30 18:08:48
【问题描述】:

我正在尝试从后面的代码中写入变量,但被告知“名称 'X' 在当前上下文中不存在。”

当我搜索此错误时,我发现它们应该在类级别声明为 public 或 protected,我已经这样做了。

我尝试在 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" %>

【问题讨论】:

  • 设为公共财产
  • 尝试将其设为属性(添加{get; set;})而不是字段。
  • 我也试过了。我会再做一次,看看它是否有所作为并更新。

标签: c# asp.net code-behind


【解决方案1】:

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

编辑编辑后,这绝对是你的问题。

此外,如果您愿意,您绝对可以使用字段来代替属性(但我总是推荐使用属性),并且您可以使用受保护的而不是公共的。除非您确实想从此类或继承链之外访问它们,否则不应公开事物。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-17
      • 2020-01-17
      • 2011-02-12
      • 2012-08-12
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      • 2017-01-10
      相关资源
      最近更新 更多