1

ログイン時のプロジェクトは、ユーザーの詳細とユーザーが属するサービス エリアもチェックします。1 つの領域にすぎませんでしたが、複数の領域に属することができるようになりました。

コードは、 を使用して動作するように設定された方法Sessionです。

var user = (from u in db.tbl_UserServiceAreaDetails
            where u.tbl_User.UserName.Equals(txt_LoginName.Text)
            && u.tbl_User.Password.Equals(txt_Password.Text)
            select u).FirstOrDefault();

if (user != null)
{
Session["Username"] = user.tbl_User.UserName;

Session["ServiceArea"] = user.tbl_ServiceArea.ServiceArea;

Session["ServiceAreaID"] = user.serviceAreaID;

多くのServiceAreaことができるようになりました。との間のリンク テーブルにあり、が in にマップされ、inにマップされてforeachいるを試していただけますか。serviceAreaIDUserServiceareaserviceAreaDetailsserviceAreaIDserviceAreaIdtbl_ServiceAreaUserAreaIDuserIdtbl_User

foreach (ListItem item in user.ServiceAreaID)働くことができるでしょうか?

userIdユーザーがログインしたときに を取得し、それをに渡すとForeach、それをSession. インデックスページserviceareaにユーザーが所属することも表示されますが、これは複数になる可能性があります。

4

2 に答える 2

1

複雑なオブジェクトもセッションに保存できるため、ID を持つすべての領域がユーザーに保存されるユーザー用のクラスを作成し、このクラスをセッションに保存します。

class UserClass
{
    public string userName;
    public Dictionary<int, string> serviceArea = new Dictionary<int,string>();
}

UserClass user = new UserClass();

Session["User"] = user;

user = (UserClass)Session["User"];

コメントへの返信:
はい、Getter&Setter を自由に使用してください。はい
、Dictionary のしくみです。最初のパラメーターはキーで、2 番目のパラメーターは値です。任意のオブジェクトで柔軟に使用できます。

UserClass user = new UserClass();

user.userName = "Rik";

foreach(...serviceArea...) // Or whatever loop you like
{
    user.serviceArea.Add(serviceAreaID, serviceArea);
}
于 2013-03-06T12:03:59.080 に答える