當我嘗試訪問控制器中的下拉值時,我曾經收到此錯誤“沒有具有鍵 'ddlcontent' 的 'IEnumerable' 型別的 ViewData 項”。然后現在的問題是,當我使用下面的當前視圖代碼時,它什么也不顯示。請告訴我我在哪里錯過它。
我嘗試檢查的鏈接是: 沒有型別為 'IEnumerable<SelectListItem>' 的 ViewData 專案具有鍵 'CategoryID'
具有鍵“XXX”的 ViewData 項的型別為“System.Int32”,但必須為“IEnumerable<SelectListItem>”型別
但到目前為止,他們都沒有幫助。看法
@model List<DemoWork.Models.Attendance>
@using (Html.BeginForm("TakeDailyAttendance", "Trainer", FormMethod.Get))
{
<table align="center">
<tr>
<th>
@Html.Label("Event name", htmlAttributes: new { @class = "control-label" })
@Html.DropDownList("dllcontent",new SelectList(ViewData.Model.Select(x=>x.Subject), ViewBag.dllcontent as SelectList), "-- select --")
</th>
<th>
<div class="col-lg-6">
@Html.Label("StartDate", "From:", htmlAttributes: new { @class = "control-label" })
<input id="startdate" name="startdate" type="date" value="" class="form-control">
</div>
<div class="col-lg-6">
@Html.Label("enddate", "To:", htmlAttributes: new { @class = "control-label" })
<input id="enddate" name="enddate" type="date" value="" class="form-control">
</div>
</th>
<th>
<div class="col-md-offset-2 col-md-10" style="margin-top:25px;">
<input type="submit" value="Search" class="btn btn-default" />
</div>
</th>
</tr>
</table>
}
控制器
[HttpGet]
public ActionResult TakeDailyAttendance(string ddlcontent, DateTime? startdate, DateTime? enddate)
{
var listone = new List<string>();
var nameqry = from n in db.Attendances
select n.Subject;
listone.AddRange(nameqry.Distinct());
ViewBag.ddlcontent = new SelectList(listone);
var tb_teachers = db.Attendances.Where(x => x.StartDate >= startdate && x.EndDate <= enddate && x.Subject.Contains(ddlcontent) && x.Approval == "Going").ToList();
return View(tb_teachers.ToList());
}
模型
[Table("Attendance")]
public partial class Attendance
{
public int AttendanceId { get; set; }
[StringLength(50)]
public string TeacherId { get; set; }
[StringLength(50)]
public string FirstName { get; set; }
[StringLength(50)]
public string LastName { get; set; }
[StringLength(50)]
public string IdNumber { get; set; }
[StringLength(200)]
public string EmailId { get; set; }
[StringLength(50)]
public string PhoneNumber { get; set; }
[StringLength(200)]
public string SchoolName { get; set; }
[StringLength(50)]
public string District { get; set; }
[StringLength(50)]
public string Province { get; set; }
public DateTime? Date { get; set; }
public int? EventID { get; set; }
[StringLength(100)]
public string Subject { get; set; }
[StringLength(300)]
public string Description { get; set; }
[StringLength(200)]
public string Location { get; set; }
[Column(TypeName = "date")]
public DateTime? StartDate { get; set; }
[Column(TypeName = "date")]
public DateTime? EndDate { get; set; }
[StringLength(100)]
public string CourseId { get; set; }
[StringLength(50)]
public string AttendaceStatus { get; set; }
[StringLength(50)]
public string Approval { get; set; }
[StringLength(50)]
public string Pin { get; set; }
}
uj5u.com熱心網友回復:
從asp-net-mvc-dropdown-list-from-selectlist:
您缺少在 SelectList 本身中設定Text和Value的欄位。這就是為什么它對
.ToString()串列中的每個物件執行 a 。你可以認為它是一個串列,SelectListItem它應該足夠聰明地檢測到這一點……但事實并非如此。
因此,在您的情況下,您需要轉換List<String>為List<SelectListItem>如下:
ViewBag.ddlcontent = new SelectList(listone.Select(i=> new SelectListItem()
{
Text = i,
Value = i
}).ToList(),"Value" , "Text");
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/416093.html
標籤:
上一篇:ProAsp.netcoreMVC如何創建視圖串列并將資料串列傳遞給控制器??(如何將資料串列從視圖傳遞給控制器??)
