-2

私は c# と MVC にはかなり慣れていませんが、イントラネット アプリを構築しています。内部ネットワーク上にあるため、アプリを使用するためにサインインする必要はありませんが、「管理」テーブルを持つデータベースに接続しています。この表は、管理者の電子メール アドレスです。また、System.DirectoryServices.AccountManagementUserPrincipal.Current.EmailAddressを使用して、ユーザーの電子メール アドレスを取得しています。私がしたいのは、UserPrincipal.Current.EmailAddressをデータベース テーブルと比較し、一致する場合はブール値を TRUE に設定して、サイト全体で参照/呼び出しできるようにすることです。

データベース テーブルに一致するモデルがあり、where ステートメントを使用してUserPrincipal.Current.EmailAddressの値に対してデータベースをクエリすることもできますが、set メソッド (ActionResult) 内でのみ実行でき、viewbag 内のブール値をその特定のコントローラーに返すことができます。関連するビューのみがアクセスします。

ユーザーがメールにアクセスしたページがデータベースと比較され、データベース管理者テーブルに含まれている/含まれていない場合はブール値が true/false に設定されるように、サイトを設定するためのベスト プラクティスを知りたいです。

編集:これは、ベースコントローラーを作成し、それを他のすべてのコントローラーに継承し、ベースコントローラー内でデータベースクエリを実行することでしょうか-そうであれば、少しのガイダンスが大いに適用されます

私の現在の設定は EmailEntityModel です:

using System;
using System.Data.Entity;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;

public partial class EmailEntities : DbContext
{
    public EmailEntities()
        : base("name=EmailEntities")
    {
    }

    public virtual DbSet<Audience> Audiences { get; set; }
    public virtual DbSet<CallToAction> CallToActions { get; set; }
    public virtual DbSet<ColourScheme> ColourSchemes { get; set; }
    public virtual DbSet<Email> Emails { get; set; }
    public virtual DbSet<EmailType> EmailTypes { get; set; }
    public virtual DbSet<Administrator> Administrators { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
    }
}

それから私は電子メールコントローラを持っています:

public class EmailsController : Controller
{
    private EmailEntities db = new EmailEntities();

    public ActionResult Index()
    {
        return View(db.Emails.ToList());


    }

コントローラ内で EmailEntities を使用して管理者 DBset をクエリできますが、これを別の場所で使用できますか?

4

1 に答える 1