【问题标题】:How to Save Temp Data in MVC如何在 MVC 中保存临时数据
【发布时间】:2016-12-27 19:04:09
【问题描述】:

我有三门课

人物类

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; }
}

我从 webservice 中获得了关于 Perosn 个人信息项目信息联系信息 >(人名)

我的主页上有 四个标签 PersonProjectContactFinish.
我能够在每个 TABS 中显示数据。

问题案例:
1)用户在个人信息页面中编辑信息并点击保存。
2)然后编辑项目信息页面并点击保存。
3)然后编辑联系信息并点击保存。
4)然后继续完成标签并点击完成编辑

当用户在完成选项卡中点击完成编辑时,只有数据应该保存在数据库中。

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

【问题讨论】:

  • 是的; MVC 确实有会话。

标签: c# session asp.net-mvc-4


【解决方案1】:

是的,您可以使用类似的方法将课程保存到会话中。

Session["name"] = yourObj;

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      首先,我应该声明您不应该在 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
      }
      

      【讨论】:

        【解决方案4】:

        在保存点击人员信息页面时,您可以这样做:

        会话["personInfo"] = personInfoObj;

        并最终检索:

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

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

        【讨论】:

          猜你喜欢
          • 2023-03-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多