如何在 MVC 中保存临时数据

本文关键字:数据 保存 MVC | 更新日期: 2023-09-27 18:31:26

我有三个类

人员类

Public class Person
{
    public string PersonID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public List<Project> Projects { get; set; }
    public List<Contact> Contacts { get; set; }
}

项目类

Public class Project
{
    public string ProjectNo { get; set; }
    public string ProjectName { get; set; }
}

联系人类

Public class Contact
{
    public string ContactNo { get; set; }
    public string ContactName { get; set; }
}

我正在从网络服务获取有关Perosn(PersonID)Perosnal信息项目信息和联系信息

我的主页上有四个选项卡 人物 , 项目联系完成.
我能够在每个选项卡中显示数据。

普罗贝尔姆案例:
1)用户在"信息"页面编辑信息并点击保存。
2)然后编辑项目信息页面并单击保存。
3)然后编辑联系信息并点击保存。
4)然后转到"完成"选项卡,然后单击"完成编辑"

当用户在"完成"

选项卡中单击"完成编辑"时,仅应将数据保存在"数据库中"。

我的问题是如何保存临时数据。
MVC中是否存在类似Session

如何在 MVC 中保存临时数据

是的,您可以将课程保存到具有类似内容的课程中。

Session["name"] = yourObj;

ASP.Net MVC 仍然是一个 ASP.Net 应用程序,因此您可以使用 Session。尽管我建议将其设置为无状态并将用户的进度保存在数据库中。

在此之前,我应该声明您不应该在会话中存储临时数据。然而:

首先我们定义接口:

public interface ISessionWrapper
{
    int SomeInteger { get; set; }
}

然后我们做 HttpContext 实现:

public class HttpContextSessionWrapper : ISessionWrapper
{
    private T GetFromSession<T>(string key)
    {
        return (T) HttpContext.Current.Session[key];
    }
    private void SetInSession(string key, object value)
    {
        HttpContext.Current.Session[key] = value;
    }
    public int SomeInteger
    {
        get { return GetFromSession<int>("SomeInteger"); }
        set { SetInSession("SomeInteger", value); }
    }
}

然后我们定义我们的基本控制器:

public class BaseController : Controller
{
    public ISessionWrapper SessionWrapper { get; set; }
    public BaseController()
    {
        SessionWrapper = new HttpContextSessionWrapper();
    }
}

最后:

public ActionResult SomeAction(int myNum)
{           
    SessionWrapper.SomeInteger
}

在保存时单击人员信息页面,您可以执行以下操作:

会话["人员信息"] = 人员信息对象;

最后检索:

PersonInfoClass

personInfoObj= (PersonInfoClass )Session["personInfo"];

(同样,您也可以为其他页面执行此操作)