簡體   English   中英

無法從代碼后面訪問變量

[英]Can't access variable from 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" %>

聽起來您的頁面未正確連接到課程。 確保在aspx頁的頁眉中有Inherits="go._default"

編輯編輯后,這絕對是您的問題。

另外,如果需要,您可以絕對使用字段代替屬性(但我始終建議使用屬性),並且可以使用protected而不是public。 除非您確實確實想從此類或繼承鏈之外訪問事物,否則它們不應公開。

使用綁定表達式時,需要在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%>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM