繁体   English   中英

实现这一点而不是在 Session 中存储值的更好方法?

[英]Better way to implement this rather than storing a value in Session?

在我的一个文件中,我允许用户选择开始和结束日期:

public DateTime? CourseStartDate
        {
            get => PDConvert.ToDateTime(this.tbCourseStartDate.SelectedDate);
            set => this.tbCourseStartDate.SelectedDate = PDConvert.ToDateTimeN(value);
        }

        public DateTime? CourseEndDate
        {
            get => PDConvert.ToDateTime(this.tbCourseEndDate.SelectedDate);
            set => this.tbCourseEndDate.SelectedDate = PDConvert.ToDateTimeN(value);
        }

在同一个文件中,我有一个验证函数,所以如果结束日期小于开始日期,用户将看到一条错误消息。

但是,我有另一个控件(在不同的文件中),如果第一个文件中的验证失败,我不希望保存该控件。

第一个文件:

private bool Validate()
    {
        if ((this.CourseStartDate != null && this.CourseEndDate != null) && (this.CourseEndDate < this.CourseStartDate))
        {
            lblError.Text = "Course Start Date must be same as or earlier than Course End Date";
            Session["CourseDates"] = "True";
            return false;
        }
        else
        {
            Session["CourseDates"] = null;
        }

        return true;

    }

第二个文件:

 public void Save()
        {
            if (Session["CourseDates"] == null)
            {
                HistoricalMark marks = new BLLHistMarks().GetHistoricalMarkByRecordId(this.HistStudentMarkId);

                foreach (GridViewRow row in this.gvMarks.Rows)
                {

                    string markType = (row.FindControl("hfType") as HiddenField).Value;
                    string value = (row.FindControl("tbMark") as TextBox).Text;
                    marks.SetMark((int)PDConvert.ToEnum(markType, TMarkType.Other), value);
                }

                new BLLHistMarks().UpdateHistoricalMarkMarks(marks);
            }
        }

有没有比使用 Session 存储“True”或 Null 更好的方法来实现这一点?

您必须将该数据保存在某处 常见位置将在会话变量中(就像您正在做的那样),或者在每个请求的查询字符串中传递它,或者在数据库中读取/写入它。 他们都有优点和缺点。 例如,查询字符串方法可以创建可能有问题的长 url,但也意味着如果用户将其添加为书签,则“状态”将保存在 url 中。

会话变量与其他任何事物一样常见,并且是执行您正在尝试的操作的合理方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM