[英]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.