簡體   English   中英

在 aspx 頁面中無法識別服務器端對象

[英]A server side object cannot be recognized in aspx page

ASPX

<a href="signUp.aspx" class="nav-link w-nav-link"><%=Account%></a>

aspx開口

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="contact.aspx.cs" Inherits="RapidTyper.contact" %>

背后的代碼

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    namespace RapidTyper
    {
        public partial class contact : System.Web.UI.Page
        {
            public string Account = "Sign In";
            protected void Page_Load(object sender, EventArgs e)
            {
                if (Session["user"] != null)
                {
                    Account = "Account";
                }
            }
        }
    }

問題:aspx中的Account無法識別並返回錯誤:“當前上下文中不存在名稱'Account'”

當您編譯和運行項目時,此錯誤就會消失。 但是,如果您不想在不編譯的情況下使用它,那么解決方法是在您的ASPX頁面(aspx 中的第一行Page指令中將您的CodeBehind屬性更改為CodeFile屬性(不推薦 這是一個SO 線程,解釋了這些屬性之間的區別。

在此處輸入圖片說明

更新
因為,使用<%%>語法在aspx頁面中引用CodeBehind中的屬性看起來更容易,但它有其局限性,例如,如果在UpdatePanel使用它,則在頁面完全回發到服務器之前無法檢索值它可能會拋出一些異常。

從 CodeBehind 設置這樣的值總是更好,如果你讓你的anchor元素在服務器上運行,然后在Page_Load事件上設置它的InnerText屬性,那么這將是一種有效的方法。 IE:

<a href="signUp.aspx" class="nav-link w-nav-link" runat="server" id="aSignup"></a>

現在在Page_Load事件后面的代碼中執行以下操作:

public string Account = "Sign In";
protected void Page_Load(object sender, EventArgs e)
{
    if(!Page.IsPostback)
    {
        aSignup.InnerText = Account;
    }

}

暫無
暫無

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

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