我正在使用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;
但我无法获得价值。 您是否知道如何从不同区域的不同控制器访问对象的值?
答案 0 :(得分: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
}
}
但是,更标准的方法是将对象持久保存到数据库中,然后将其拉回。您可以阅读使用Entity Framework来访问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
}