2017-03-25 3 views
0

ドロップダウンリストをフィルタリングする方法と、ログインしたユーザーの名前を取得する必要があります。私はこのコードを持っているコントローラでドロップダウンリストをログインする方法MVCのユーザー

var agentBR = (Session["aID"]); 
    ViewBag.AgentID = new SelectList(db.tbl_agenti.Where(x => x.aID.Equals("agentBR")), "aID", "agent_ime"); 

ではなく、仕事を、セッションID、[OK]、およびブラウザで私はこのエラーがあります:

DbComparisonExpressionは同等のタイプの引数が必要です。

説明:現在のWeb要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこで発生したのかについては、スタックトレースを参照してください。

例外の詳細: System.ArgumentException:DbComparisonExpressionには、同等の型の引数が必要です。

ソースエラー:

@Html.LabelFor(model => model.AgentID, "AgentID", htmlAttributes: new { @class = "control-label col-md-2" })

@Html.DropDownList("AgentID", null, htmlAttributes: new { @class = "form-control" })

@Html.ValidationMessageFor(model => model.AgentID, "", new { @class = "text-danger" })

+0

'aID'文字列型ですか? – Shyju

+0

aIDは、データベーステーブルのint、primarikeyです。 –

+0

'Session [" aID "]'の中には何がありますか? – Shyju

答えて

0

Where方法

x.aID.Equals("agentBR") 

でコードのこの部分はaIDプロパティの値がEqualsに渡された値に一致しているレコードをフィルタリングするためにしようとしています方法。あなたはaIDがint型ですが、文字列"agentBR"をEqualsメソッドに渡して比較しているため、型の不一致エラーが発生しています。

同じタイプを渡す必要があります。

有効INT32値がSession["aID"]内部に格納された値をされたと仮定すると、あなたはint型の変数にそれを読んで、同じintタイプのものであり、あなたのaIDプロパティと比較するために、あなたのwhere句でこれを使用することができます。

int agentId=0; 
if(Session["aID"]!=null) 
{ 
    agentId = Convert.ToInt32(Session["aID"]); 
} 
var agents = new SelectList(db.tbl_agenti 
           .Where(x => x.aID.Equals(agentId)), "aID", "agent_ime"); 
ViewBag.AgentID = agents; 
+0

ありがとうございます。 –

関連する問題