0

Null が存在するかどうかを確認するためにコードをステップ実行しましたが、誰もが値をもたらしていますが、問題を見つけることができません。

public partial class UserDetail : ICSBaseUserControl
{
    UserRepository userDao = new UserRepository();
    User user;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            long userID = Convert.ToInt64(Request[UrlParameters.UrlParameterName.UserID]);
            user = (userID > 0) ? userDao.GetUser(AppSession.Company.ID, userID) : new c365_EntityFramework.User();
            if (user.ID > 0)
            {
                txtFirstName.Text = user.Forename;
                txtSurname.Text = user.Surname;
                txtAddress.Text = user.Address1;
                txtEmail.Text = user.Email;
                txtUsername.Text = user.Username;

            }
        }
    }

    protected void Button2_Click(object sender, EventArgs e)
    {
        bool result = userDao.UpdateUser(user.ID, txtFirstName.Text, txtEmail.Text, txtSurname.Text, txtAddress.Text, txtUsername.Text);
    }
}

編集

userこれは、ロードを外に移動することで、私がそれを修正した方法ですif(!IsPostBack):

public partial class UserDetail : ICSBaseUserControl
{
    UserRepository userDao = new UserRepository();
    User user;
    protected void Page_Load(object sender, EventArgs e)
    {
        long userID = Convert.ToInt64(Request[UrlParameters.UrlParameterName.UserID]);
        user = (userID > 0) ? userDao.GetUser(AppSession.Company.ID, userID) : new c365_EntityFramework.User();
        if (!IsPostBack)
        {
            if (user.ID > 0) // Check for user ID
            {
                txtFirstName.Text = user.Forename;
                txtSurname.Text = user.Surname;
                txtAddress.Text = user.Address1;
                txtEmail.Text = user.Email;
                txtUsername.Text = user.Username;
            }
        }
    }
4

1 に答える 1

4

問題は、フィールドuserがインスタンス化されていないためnull、ボタンをクリックすると表示されることだと思います。

ポストバックでない場合にPage_Loadのみ入力されます。ボタンを押すと、ポストバックが進行中で、その時点で取得できませんか? また、ASP .NET ページのライフサイクルを調べる必要があります。useruser

ASP .NET ページはフィールドを記憶しないuserため、セッション状態にしてからそのように使用することができます。

于 2013-08-22T11:30:21.610 に答える