public ActionResult Update(string id)
{
Device record = new Device(); // OK
record = record.Find(new Guid(id), service); // OK
if (record.secondValue.HasValue) // <---
record.secondSelectList.FirstOrDefault(i => i.Value == record.secondValue.ToString()).Selected = true;
return View(record);
}
上面的代码找到了给定ID的设备,然后设置DropDownList 如果 secondValue 有值,如果没有则跳过。
代码工作正常,但在许多控制器的许多操作中,我必须设置 IF 条件来检查 xxxValue 是否确实有值。
我不能直接这样做:
record.secondSelectList.FirstOrDefault(i => i.Value == record.secondValue.ToString()).Selected = true;
因为在任何时候,FirstOrDefault都可能返回一个空引用,由于使用了 .Selected 属性,它将立即引发异常。
好的,我的问题是如何设置DropDownList而不需要使用If条件?
我想,不是使用FirstOrDefault(),而是使用SetSelected()。
record.secondSelectList.SetSelected(i => i.Value == record.secondValue.ToString());
SetSelected()方法在哪里我将处理null结果。 我怎么能这样做?
答案 0 :(得分:5)
你可以内联:
record.secondSelectList.FirstOrDefault(i => { if (i.Value == record.secondValue.ToString()) { i.Selected = true; return true; } return false; });
或者,可能更清楚:
foreach (var listItem in record.secondSelectList) {
if (listItem.Value == record.secondValue.ToString())
listItem.Selected = true;
}