前端需要錄入用戶賬號,但客戶要求最好是選擇式的,並且只是顯示用戶名就好。
但前端已經做好,采用雙model的viewmodel來做太麻煩,就采用了下述方法。
后端代碼:
List<SelectListItem> li = new List<SelectListItem>(); var us = _context.assetUsers; foreach (var item in us) { SelectListItem listItem = new SelectListItem(); listItem.Text = item.Name; listItem.Value = item.OwnerID.ToString(); li.Add(listItem); } ViewBag.AllUser = li;
前端引入:
<select asp-for="AsOwner" class="form-control"> <option hidden></option> @foreach (var item in (List<SelectListItem>)ViewBag.AllUser) { <option value=@item.Value> @item.Text</option>@*value存儲的是賬號,text為用戶名*@ } </select>
利用ViewBag引入Model
var al = _context.asUsers.ToList();
ViewBag.User = al;
前端引入ViewBag.User並將其轉為list<model>
@{ ViewData["Title"] = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; var Uname = ViewBag.User as List<as.Models.AssetUser>; }
前端顯示
<td> @*@Html.DisplayFor(modelItem => item.AssetOwner)*@ @*@item.AssetOwner*@ @if (Uname.Where(n => n.OwnerID.Equals(item.AssetOwner)) == null) { @item.AssetOwner } else { @Uname.Where(n => n.OwnerID.Equals(item.AssetOwner)).FirstOrDefault().Name } </td>
