如何过滤下拉列表,我需要记录登录用户的名称 .
在控制器中我有这个代码:
var agentBR = (Session["aID"]);
ViewBag.AgentID = new SelectList(db.tbl_agenti.Where(x => x.aID.Equals("agentBR")), "aID", "agent_ime");
但没有工作,会话ID确定,并在浏览器中我有这个错误:
DbComparisonExpression requires arguments with comparable types.
Description: 执行当前Web请求期间发生了未处理的异常 . 请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息 .
Exception Details: 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”})
1 回答
这部分代码在
Where
方法中尝试过滤
aID
属性值与Equals
方法中传递的值匹配的记录 . 您提到aID是int
类型,但是您将字符串"agentBR"
传递给Equals方法进行比较,因此会出现类型不匹配错误 .你应该尝试传递相同的类型 .
假设
Session["aID"]
中存储的值是有效的int32值,您可以将其读取为int变量并使用where子句中的值与aID
属性进行比较,该属性具有相同的int
类型 .