如何在 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
?
是的,您可以将课程保存到具有类似内容的课程中。
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
}
在保存时单击人员信息页面,您可以执行以下操作:
会话["人员信息"] = 人员信息对象;
最后检索:
PersonInfoClasspersonInfoObj= (PersonInfoClass )Session["personInfo"];
(同样,您也可以为其他页面执行此操作)