Nicht Zugriff auf nicht-statisches Feld im statischen Kontext
Ich erhalte eine Fehlermeldung beim Programmieren in Visual Studio 2010, die besagt Cannot access non-static field _cf in static context
, kann jemand bitte erklären, warum ich immer diese Meldung und wenn möglich, wie dieses Problem zu beheben?
CommonFunctions.cs
namespace WebApplication1.Functions
{
public class CommonFunctions
{
public string CurrentUser()
{
string login = HttpContext.Current.User.ToString();
string[] usplit = login.Split('\\');
string name = usplit[1];
return name;
}
}
}
Team.aspx.cs
namespace WebApplication1
{
public partial class Team : System.Web.UI.Page
{
private readonly CommonFunctions _cf = new CommonFunctions();
public string CurrentUser = _cf.CurrentUser();
protected void Page_Load(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(CurrentUser))
{
//Do stuff here
}
else
{
//Do other stuff here
}
}
}
}
Kann ich die CurrentUser
code direkt in die protected void Page_Load
- Funktion, aber da muss ich wiederverwenden CurrentUser
während des gesamten Projekts es scheint lächerlich, zu replizieren.
Jede Hilfe wäre sehr geschätzt 🙂
- Google zeigt 1,670,000 Ergebnisse für die Suche nach deiner Fehlermeldung (z.B. "kein Zugriff auf nicht-statisches Feld im statischen Kontext", ohne Anführungszeichen) ein. Im Allgemeinen ist dies ein nützlicher trick: nehmen Sie Ihre Fehlermeldung, entfernen von Identifikatoren zu Ihrem spezifischen Programm (z.B.
_cf
) und feed der rest von Google. Extrem hoch sind die Chancen, dass Sie eine Antwort bekommen die Rechte zurück. - Warum mischst du UI.Seite mit ASP.MVC ? Wenn Sie benötigen Zugriff auf den Aktuellen Benutzer-Sitzung statt HttpContext. Ich schlage vor, Sie Lesen Standard-template-Projekt für ASP.MVC
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einstellung die Dinge in den Konstruktor würde mehr Sinn machen:
Können Sie Sie nicht initialisieren Sie das aktuelle Feld Benutzer durch den Aufruf einer Methode auf die _cf-Feld. Die beiden Felder müssen nicht eine bestimmte Reihenfolge dieser Ausführung. CurrentUser konnte initialisiert werden ersten.