0

我正在使用 ASP.Net MVC4,我自定义我的登录,这没关系,我想保存这个对象 USER,我可以从不同的控制器和不同的区域访问。我试图将此对象定义为“静态”,但我无法访问对象的值:

if (Servicio.ValidarUsuario())
            {
                string Mensaje = "";
                Models.AdmUsuario oAdmUsuario = new Models.AdmUsuario();
                oAdmUsuario.Au_codusuario = login.UserName;
                Servicio.RetornaEntidad<Models.AdmUsuario>(ref Mensaje, "admsis.adm_usuario", oAdmUsuario.getPk(), oAdmUsuario);
                ***Models.AdmUsuario.UserWeb = oAdmUsuario;***
                FormsAuthentication.SetAuthCookie(login.UserName, false);                 
                Session["Modulo"] = null;
                Session["Menu"] = null;
                return RedirectToAction("index", "raMainReclamo", new { area = "Reclamos" });
            }

在我定义的模型中:

public static AdmUsuario UserWeb;

但我无法获得价值。你有什么想法,我怎么能从不同区域的不同控制器访问一个对象的值?

4

1 回答 1

2

您需要一种在请求之间存储对象的方法。您可以将对象放入会话内存中并将其拉回。

{
    // Other Code
    Session["AdmUsuario"] = oAdmUsuario;
    return RedirectToAction("index", "raMainReclamo", new { area = "Reclamos" });
}

Reclamos 区域的控制器

public class raMainReclamoController : Controller
{
    public ActionResult Index() {
         var oAdmUsuario = Session["AdmUsuario"] as Models.AdmUsuario;

         // Other Code
    }
}

但是,更标准的方法是将对象持久保存到数据库中,然后将其拉出。您可以阅读有关使用实体框架访问 sql 数据库的信息。我喜欢使用 RavenDB 进行存储,因为它使保存对象变得非常容易。

** 回应评论的更新 **

这只是伪代码,因为我不知道您使用什么来连接到 postgres。

{
    // Other Code
    oAdmUsuario = postgresContext.Store(oAdmUsuario);
    postgresContext.SaveChanges();
    return RedirectToAction("index", "raMainReclamo", new { area = "Reclamos", id = oAdmnUsuario.Id });
}

Reclamos 区域的控制器

public class raMainReclamoController : Controller
{
    public ActionResult Index(int id) {
         var oAdmUsuario = postgresContext.GetById<Models.AdmUsuario>(id);

         // Other Code
    }
于 2013-01-07T14:02:36.733 回答