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

ただし、より標準的なアプローチは、オブジェクトをデータベースに永続化してからプルバックすることです。EntityFrameworkを使用して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 に答える