【发布时间】:2016-06-17 16:52:46
【问题描述】:
项目:
- ASP.NET 4.5.2
- MVC 5
我似乎完全无法以有条件的方式将第一个条目添加到选择列表中。
下面是我的代码:
public SelectList getStatus(Guid company) {
var statusValue = db.Company.Where(x => x.CompanyId.Equals(company)).Select(x => new { CompanyStatusId = x.CompanyStatusId }).SingleOrDefault();
var statusList = db.CompanyStatus.Select(x => new { CompanyStatusId = x.CompanyStatusId, CompanyStatusName = x.CompanyStatusName }).ToList();
var status = new SelectList(statusList, "CompanyStatusId", "CompanyStatusName", statusValue);
if(statusValue.CompanyStatusId.Equals(Guid.Empty) || statusValue.CompanyStatusId.Equals(null)) {
var insertItem = new SelectListItem { Value = "", Text = " « ‹ Select a Status › » " };
status.ToList().Add(insertItem);
}
return status;
}
在方法内通过行号演练:
- 从 Company 表中获取 CompanyStatusId。这是一个外键 查找表。
- 获取提供外键的查找表。
- IF 语句:如果 CompanyStatusId 为 null 或空白或为空 Guid,添加一个带有空白值的初始“选择状态”条目。
我想要这样做的原因是,任何已经拥有状态的公司都不会获得“选择状态”条目,但任何没有获得该条目的公司。但是,我上面的内容不起作用。我已经通过断点确认 Guid 的 null 值确实会触发 If 语句(至少这样可以工作)并且 IF 语句的内容确实得到处理,但生成的下拉菜单没有“选择状态”条目。
这一切都位于 BaseController 中,因为它需要可从大量内部页面访问。前端的下拉列表由来自此 BaseController 的 ViewBag 填充。
帮助?
【问题讨论】:
-
status.ToList()正在创建一个新的List<SelectListItem>(并且您将新项目添加到其中,而不是SelectList) -
我不知道如何纠正这个问题。这就是我首先提出这个问题的原因。
标签: asp.net-mvc linq lambda asp.net-mvc-5 selectlist