传递到视图的操作异常无效
本文关键字:操作 异常 无效 视图 | 更新日期: 2023-09-27 18:30:41
我正在尝试显示用户尚未拥有的所有单元的下拉列表无济于事。所以我有列表 A 包含所有单位,列表 B 包含用户拥有的所有单位。 我想要的是列表C,它基本上是列表A,从中删除了列表B。 到目前为止,我已经设法过滤掉了数据,但我似乎无法在我的视图中显示它。 我得到的只是一个空白的下拉列表。 谁能看到我哪里出了问题??
public ActionResult AddUnit(String usrCode)
{
var units = unitsClient.GetAllunits();
var allunitsCode = (from s in units select s.unitCode).ToList();
var thisUnitCode = (from s in db.Units
where s.UsrCode == usrCode
select s.UnitCode).ToList();
var notGot = allunitsCode.Except(thisUnitCode);
List<unitsummaryDTO> list = UnitList(units, notGot);
ViewBag.unitCode = new SelectList(list, "unitCode", "unitTitle");
var model = new UserUnit { UsrCode = usrCode };
return View("AddUnit", model);
}
private List<unitsummaryDTO> UnitList(unitsService.unitsDTO[] units, IEnumerable<string> notGot)
{
var allunits = unitsClient.GetAllunits();
var allunitsCode = (from s in allunits select s.unitCode).ToList();
IEnumerable<String> list1 = allunitsCode;
IEnumerable<String> list2 = notGot;
var listFinal = list1.Union(list2).toList;
return listFinal.Select(x => new unitsummaryDTO(){unitCode = x}).ToList();
}
这是我的视图模型。 但我得到的只是一个空白下拉菜单??谁能帮我。
@model Projv1.UserUnit
@Html.HiddenFor(model => model.unitCode)
@Html.DropDownList("UnitCode")
它将是空白的,因为@Html.DropDownList("UnitCode")
没有来源。如果您查看 MSDN for Html.DropDownList,您最有可能尝试使用的是 DropDownList(String, IEnumerable<SelectListItem>)
。
您将选择列表放入ViewBag
unitCode
请尝试:
@Html.DropDownList("Unit Code", ViewBag.unitCode);
处理此问题的一种更简单的方法是将UserUnit
扩展为 ViewModel(或创建某些内容),以在其上包含SelectList
所需的项目,并让 MVC 在绑定中完成繁重的工作。
public class UserUnit
{
// ... other properties
IEnumerable<unitsummaryDTO> UnitCodes { get; set; }
public string MyUnitCode { get; set; }
}
然后
@Html.DropDownListFor(n => n.MyUnitCode,
new SelectList(Model.UnitCodes, "unitCode", "unitTitle"))