ASP.NET CORE会话替代方案

时间:2019-01-30 14:14:43

标签: asp.net-mvc asp.net-core

我有一个ASP.NET WebForms应用程序,可与Sessions广泛协作。实际上,我有一个名为“问卷”的模型

public class myQuestionnaire
{
        public int ID { get; set; }
        public string Name { get; set; }
        public string Status { get; set; } = "A";
        public List<Question> Questions { get; set; } = new List<sQuestion>();
}

问卷包含问题列表

public class Question
{
        public int ID { get; set; }
        public string Name { get; set; } = "";
        public string Remarks { get; set; } = "";
        public List<QuestionAnswer> Answers { get; set; } = new List<QuestionAnswer>();
}

public class QuestionAnswer
{
        public int ID { get; set; }
        public string Name { get; set; }
        public string Text { get; set; }
        public int Weight { get; set; }
}

我有一个维护表格,其中我从数据库中加载问卷,将其保留在会话变量中,对于每次更改,我都需要对问卷进行调查,然后从Session加载而不是每次从DB加载。 / p>

例如,要更改调查表名称,我有以下web方法,当表单上的调查表名称更改时,该方法是通过javascript触发的


[WebMethod(EnableSession = true)]
public void ChangeName(string new_name)
{
    myQuestionnaire _q = () Session["MyQuestionnaireSessionName"]; 
    _q.Name = HttpUtility.UrlDecode(name);
}

现在,我们决定在.NET Core中迁移解决方案,但是上述方法面临一些问题。实际上,如果不将对象序列化为字符串,就无法将其保留在会话中。如果这样做,那么我们将无法直接访问该对象,因此我们需要对其进行手动序列化,并在对该对象执行的每次更改中将其反序列化。

第二个问题是是否存在另一种方法来实现上述情况,而无需将每个临时更改的整个对象都保留在数据库中。 我们正在考虑cookie,缓存和viewstate,但我对MVC和CORE不够熟悉,我也不了解它们的优缺点。

0 个答案:

没有答案