2012-02-20 10 views
0

私はこのトピックと似た問題がありますhttp://forums.asp.net/t/1763534.aspx/1ユーザーの特定のデータを表示

ユーザー名に基づいて顧客にデータを表示する必要があります。私は新しいトピックを作成しません。なぜなら、私はこれまでずっとこれをやっており、誰も応答していないからです。あなたが他の人よりも多くを知っているように見えるので、私は「

where t.UserId == ViewBag.UsersRecord 

これは私のコントローラ

public ActionResult Index() 
{ 
    MembershipUser currentUser = 
     Membership.GetUser(User.Identity.Name, true /* userIsOnline */); 


    ViewBag.UsersRecord = currentUser.ProviderUserKey; 

    var details = from t in db.Employes 
        where t.UserId ==ViewBag.UsersRecord 
        select t; 

    return View(details.ToList()); 

} 

は不思議な、Visual Studioは、ここで私は、エラーを示している

...アンをお聞き表現ツリーにdinamycが含まれていない可能性があります "

私はsomethi間違っている?

+1

申し訳ありませんが、 stackoverflowの新しいと私は毎回そうしなければならないことを知っていた。私はすべての答えを取った、それはうまくいくはずです。 – Mirko

+0

これは大丈夫です - あなたにこれを指摘したいだけです - あなたがSOで始まるときは明白ではありません。あなたはすばらしいことをしています - お楽しみください! –

答えて

2

ダイナミックはコンパイル時に決定されるため、ダイナミックは使用できません。 試し:

 
Guid userId = (Guid)ViewBag.UsersRecord; 

var details = from t in db.Employes 
        where t.UserId == userId.ToString() //if you are using a string guid, otherwise remove ToString() 
        select t; 

//or simply 

var details = from t in db.Employes 
        where t.UserId == (Guid)currentUser.ProviderUserKey 
        select t; 

私はあなたのユーザーIDは、(タイプ賢明)であるかわからないので、あなたに100%の答えを与えることはできませんここ

+0

UserIdはGUID型です。同じIDを持つデータだけを表示するには、UserId Employe IDと比較する必要があります。 – Mirko

+0

その場合は上記の2番目のケースを参照してください(私は編集しました) –

0

これは何について:

where t.UserId == new Guid(ViewBag.UsersRecord.ToString()); 
関連する問題