2017-08-02 1 views
0

をその:全く
が、動作しますスコープの問題があった(:MVCビューのリスト<t>インスタンス化する方法)私は、このようなリストを持っているセッションVARを持って

Session["roles"] = UserManager.GetRoles(uid) as List<string>; 

今私は、このようなこと私のレイアウトでそれを使用したい:

@{ 
List<string> rolz = Session["roles"] as List<string>; 
}@ 

と、残念ながら私はこのERRを得続ける:
ジェネリック型を使用して「system.collections.generic.li st "には1つの型引数が必要です

私は
を超えるリストを渡す例を見ていますが、すでにリストである既存のセッションvarをどのように使用しますか?

UPDATE 1:
PLSは注意:VIEW
ない別のコントローラ
でIN [ "役割"]セッションを取得することに興味
イムを私が行うため、このようなビューは、エラー
を吐きされます

List<string></string> 

UPDATE 2:イムはそれをコーディングするとき、それはこのようにそれをインテリセンスしようとし続けるので、それはこの構文「リスト」を好き
を考えていません:その後、

Session["roles"] = UserManager.GetRoles(uid).ToList(); // stores List<string> 

店セッション変数にList<string>上記の割り当て:タイトルはUserManager.GetRoles &を使用する正しい方法は、このようにする必要がありHttpSessionStateに入れて、この質問

+0

あなたが試してみました: 'リスト<文字列> rolz =(一覧<文字列>)セッション["役割"];'。文字列のリストへの直接変換。なぜリストではなく配列ですか? :)編集:モバイルアプリを使用してコメントするので、ライブコメントはありません。ほとんど同じコメントのために申し訳ありません@Valkyriee。 – Spectarion

+0

'UserManager.GetRoles'は' IList 'を返します。 – Nkosi

+0

@nkosi - はい、ilistを返しますが、気付いた場合は、リストにキャストします – toy

答えて

0

が正しい方向に私を設定するための@tesuyaをお願い致しますが
それがこれに本当の答えは
をセッション値を引き出すとは何の関係もなかったようだが、
オリジナルの完全なコードはこのように見えたようではなく、スコープの問題:

@{ 
    string me = @ViewContext.RouteData.Values["controller"].ToString() + "-" + @ViewContext.RouteData.Values["action"].ToString(); 
    string jscript = "/Scripts/es/" + me + ".js"; 
} 

と私はセッションVARを追加したとき、それは、そのようなことを失敗しました:私はこれをしなかったとき

@{ 
    string me = @ViewContext.RouteData.Values["controller"].ToString() + "-" + @ViewContext.RouteData.Values["action"].ToString(); 
    string jscript = "/Scripts/es/" + me + ".js"; 
    var rolz = Session["roles"] as List<string>; 
} 

しかし、すべてが働いた:

string me = @ViewContext.RouteData.Values["controller"].ToString() + "-" + @ViewContext.RouteData.Values["action"].ToString(); 

@{ 
    var rolz = Session["roles"] as List<string>; 
    string me = @ViewContext.RouteData.Values["controller"].ToString() + "-" + @ViewContext.RouteData.Values["action"].ToString(); 
    string jscript = "/Scripts/es/" + me + ".js"; 
} 

ので、問題のある行は、問題は、このでした原因

なぜ私はまだ外れていないのですか
しかし、それは別の投稿の質問です...
が(上記コナン野蛮の口調で言った)

2

の正確な性質を反映して調整されていますあなたはそこロールのリストを取得することができます異なる場合がありUserManager.GetRoles方法はIList<string>を返すこと

@{ 
    var rolz = Session["roles"] as List<string>; 
} 

注意をそれでList<string>からListタイプになるにはToListメソッドが必要です。

参考:

Asp MVC: How get roles from ApplicationUser

+0

始めてくれてありがとうございます。私はゆるくタイプされた "rolz"を使うことを考慮しませんでしたが、2番目のリストは私に同じジェネリックタイプのエラーを与えてくれます。 – toy

+0

ps @tetsuya - セッションからリストを引っ張る私の質問の要点であるビューでは、ちょうどユーザマネージャーのリストをプルします。 – toy

+0

'ToList'を使用して' GetLoles'から 'ListYour'を使って' IList 'を' List 'リストを抽出するために 'NullReferenceException'の代わりにnullを返します(https://stackoverflow.com/questions/3035291/how-to-add-liststring-in-session-state&https://stackoverflow.com/questions/8194238を参照)。/how-to-retrieve-a-generic-list-from-session)である。 –

関連する問題