用户未登录时的NullReference

时间:2015-06-23 23:04:54

标签: asp.net membership

当没有人登录时我无法访问页面。我想在userID匹配时显示一些按钮,如果没有人记录则只显示带有FillPage()的页面。

protected void Page_Load(object sender, EventArgs e)
    {
        FillPage();

        if (!String.IsNullOrWhiteSpace(Request.QueryString["id"]))
        {
            int id = Convert.ToInt32(Request.QueryString["id"]);
            JobReqModel model = new JobReqModel();
            JobDescriptions job = model.GetJob(id);

            if (job.PostedBy == Membership.GetUser().ProviderUserKey.ToString())
            {
                Button2.Visible = true;
                Button3.Visible = true;
                Button4.Visible = true;
                Lineseparator.Visible = true;
            }

            else
            {
                Button2.Visible = false;
                Button3.Visible = false;
                Button4.Visible = false;
                Lineseparator.Visible = false;
            }
        }

我在这一行得到了NullReference

if (job.PostedBy == Membership.GetUser().ProviderUserKey.ToString())

我理解为什么是NULL,但我如何避免这种说法呢?我试图测试ProviderUserKey是否为null,之后只使用Fillpage。

1 个答案:

答案 0 :(得分:1)

只需添加空检查。

如果GetUser()返回null,则在尝试访问其ProviderUserKey属性时您有NRE。

if (MemberShip.GetUser() != null && Membership.GetUser().ProviderUSerKey.ToString() == josb.PostedBy)