ドロップダウン リストをフィルタリングする方法と、ログイン ユーザーの名前を取得する必要があります。
コントローラーには次のコードがあります。
var agentBR = (Session["aID"]);
ViewBag.AgentID = new SelectList(db.tbl_agenti.Where(x => x.aID.Equals("agentBR")), "aID", "agent_ime");
しかし、動作せず、セッション ID は問題なく、ブラウザでは次のエラーが発生します。
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" })
Where
メソッド内のコードのこの部分
x.aID.Equals("agentBR")
aID
プロパティ値がEquals
メソッドで渡された値と一致するレコードをフィルタリングしようとしています。aID がint
型であると述べましたが"agentBR"
、比較のために文字列を Equals メソッドに渡しているため、型の不一致エラーが発生します。
同じ型を渡そうとする必要があります。
内部に格納されている値Session["aID"]
が有効な int32 値であると仮定すると、それを int 変数に読み取り、それを where 句で使用して、aID
同じint
タイプのプロパティと比較できます。
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;
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加