C# 在会话中逐个保存数据,并将其全部保存在数据库中

C# 在会话中逐个保存数据,并将其全部保存在数据库中,c#,asp.net-mvc,session,C#,Asp.net Mvc,Session,我正在发送ajax请求,以便在会话中以json格式保存模型 <script type="text/javascript"> $(function () { $('#addSubject').click(function () { var mydata = { "SubjectId": $('#subjectid').val(), "ObtainedGpa": $('#obt

我正在发送ajax请求,以便在会话中以json格式保存模型

<script type="text/javascript">
    $(function () {
        $('#addSubject').click(function () {
            var mydata = {
                "SubjectId": $('#subjectid').val(),
                "ObtainedGpa": $('#obtainedgpa').val(),
                "SubjectTypeId": $('#subjecttypeid').val()
            };
            var dataToPost = JSON.stringify(mydata);
            $.ajax({
                type: "Post",
                url: "/PreviousExamInfo/SaveSubjectInfo",
                contentType: "application/json;charset=utf-8",
                data: dataToPost,
                dataType: "json",

            });
        })
    });
</script>

$(函数(){
$('#addSubject')。单击(函数(){
var mydata={
“主观性”:$(“#主观性”).val(),
“ActainedGPA”:$('#ActainedGPA').val(),
“SubjectTypeId”:$('#SubjectTypeId').val()
};
var dataToPost=JSON.stringify(mydata);
$.ajax({
类型:“Post”,
url:“/PreviousCheckInfo/SaveSubjectInfo”,
contentType:“应用程序/json;字符集=utf-8”,
数据:dataToPost,
数据类型:“json”,
});
})
});
这已成功完成。但在我的操作中,我必须在会话中保存它们。方法类似于“单击“添加”按钮并在会话中保存值,再次单击“添加”按钮并在会话中使用以前存储的值存储新值”。单击“提交”按钮后,会话中的所有值都将存储在数据库中。我怎么知道会话按我预期的那样工作?因为当我使用

var mySession=Session[“myItem”] 这只显示新值,而不是我以前添加的值。我应该使用会话吗?还有什么我可以用的吗

[HttpPost]
public JsonResult SaveSubjectInfo(PreviousExamSubject PreviousExamSubject)
{
列表=新列表();
列表.添加(上一个ExamSubject);
会话[“myitem”]=列表;
返回Json(JsonRequestBehavior.AllowGet);
}

代码总是用新列表替换现有会话[“myitem”]。要添加,您可以执行以下操作:

[HttpPost]
public JsonResult SaveSubjectInfo(PreviousExamSubject previousExamSubject)
{
    List<PreviousExamSubject> list= (List<PreviousExamSubject>) Session["myitem"] ?? new List<PreviousExamSubject>();
    list.Add(previousExamSubject);
    Session["myitem"] = list;
    return Json(JsonRequestBehavior.AllowGet);
}
[HttpPost]
public JsonResult SaveSubjectInfo(PreviousExamSubject PreviousExamSubject)
{
列表=(列表)会话[“myitem”]??新建列表();
列表.添加(上一个ExamSubject);
会话[“myitem”]=列表;
返回Json(JsonRequestBehavior.AllowGet);
}

谢谢,这行可以用,但是你能告诉我这行是如何工作的吗List=(List)Session[“myitem”]??新列表()。。我不明白,那么我会把它标记为A=b??c表示如果b有a值(b!=null),则a被设置为等于b,否则,a将被设置为c。b和c需要是相同的类型,因此转换会话变量。欲了解更多有关??接线员,请看这里:
[HttpPost]
public JsonResult SaveSubjectInfo(PreviousExamSubject previousExamSubject)
{
    List<PreviousExamSubject> list= (List<PreviousExamSubject>) Session["myitem"] ?? new List<PreviousExamSubject>();
    list.Add(previousExamSubject);
    Session["myitem"] = list;
    return Json(JsonRequestBehavior.AllowGet);
}