1

私はウェブページにかなり慣れていないので、この基本的なトピックに触れる必要があります。

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            UserLogin ObjUser = new UserLogin();
            Persona ObjPersona = new Persona();
            DataSet ds = new DataSet();
            string UserName = null;
            UserName = WindowsIdentity.GetCurrent().Name;
            UserName = Regex.Replace(UserName, ".*\\\\(.*)", "$1", RegexOptions.None);                
            ds = ObjUser.GetUserData(UserName);
            ObjPersona.UserName = UserName;
            ObjPersona.RealName = ds.Tables[0].Rows[0][0].ToString();
            ObjPersona.Ranking = ds.Tables[0].Rows[0][1].ToString();
            if (((bool)ds.Tables[0].Rows[0]["TNT"] == false)) ObjPersona.TNT = false;
            else ObjPersona.TNT = true;
            if (((bool)ds.Tables[0].Rows[0]["TLG"] == false)) ObjPersona.TLG = false;
            else ObjPersona.TLG = true;
            if (((bool)ds.Tables[0].Rows[0]["NEG"] == false)) ObjPersona.Negocios = false;
            else ObjPersona.Negocios = true;
            if (((bool)ds.Tables[0].Rows[0]["RES"] == false)) ObjPersona.Residenciales = false;
            else ObjPersona.Residenciales = true;
            if (((bool)ds.Tables[0].Rows[0]["BO"] == false)) ObjPersona.BO = false;
            else ObjPersona.BO = true;
            if (((bool)ds.Tables[0].Rows[0]["BOA"] == false)) ObjPersona.BOA = false;
            else ObjPersona.BOA = true;
            ObjUser.CreateRegister(ObjPersona);
        }
    }

ページが読み込まれた後の簡単な実行。ストアドプロシージャがDataSetに入力し、データセットを使用してデータをオブジェクト(この場合はObjPersona )に配置します。

さて、私が別の呼び出しでObjPersonaを使用するつもりであるとき、言いましょう。

protected void BtnClose_Click(object sender, EventArgs e)
    {            
        ObjUser.UpdateRegister(ObjPersona);
        LblClose.Text = "Sesión Cerrada";
    }

そこにデータがないため、機能しません。(オブジェクト内のデータを使用したい場合はエラーになります)

ユーザーデータを取得するためのプロシージャ(この場合はpage_load)を1回だけ呼び出し、そこから操作します。別のコントロールでリコールされたデータにアクセスするにはどうすればよいですか?

ありがとう。

4

1 に答える 1

3

リクエストごとに、asp.netPageオブジェクトの新しいインスタンスが作成されます。InitページにポストバックするたびLoadに、、、イベントハンドラーが呼び出されます。同じオブジェクトを扱っていません。

前回のリクエストでメンバー変数を入力した場合、今回は使用できなくなります。

ポストバック間でデータを永続化するには、何らかの手段を使用する必要があります。

Asp.netには、これを行うための2つの組み込みメソッドが用意されています。1つはで、もう1つはViewStateですSession。セッション変数はサーバーに保存され、ViewStateデータはフォームの非表示の入力変数に保存されます。

その中に大量のデータがある場合は、DataSetに入れないでくださいViewState。大きなViewStateが作成され、ページの読み込みが遅くなります。

于 2012-08-06T19:59:01.800 に答える