我正在嘗試顯示來自三個模型的資料,有兩個模型(STAFF、DEPARTMENT)使用顯示資料,使級聯下拉一個模型(STAFF_PERMISSION)插入資料,使
但不斷得到:The model item passed into the ViewDataDictionary is of type 'System.Collections.Generic.List1[Voyager.Models.Department.Staff_To_Show]
StaffPermission.cshtml
@model Voyager.Models.Department.Staff_To_Show
@{
ViewBag.Title = "new";
}
<h2>new</h2>
<form method="post" action="/Home/StaffPermission">
@Html.AntiForgeryToken()
<div class="form-horizontal">
<select id="DepartmentNumber" name="DepartmentNumber"class="form-control">
<option value="">select</option>
@foreach (var item in Model.Departments)
{
<option value="@item.DepartmentNumber"> @Html.DisplayFor(modelItem => item.DepartmentNumber)</option>
}
</select>
<br/>
<select id="DepartmentNumber" name="DepartmentNumber"class="form-control">
<option value="">select</option>
@foreach (var item in Model.Staffs)
{
<option value="@item.StaffNumber"> @Html.DisplayFor(modelItem => item.StaffNumber)</option>
}
</select>
<hr />
<div class="form-group">
@Html.LabelFor(model => model.StaffPermissions, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.StaffPermissions, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.StaffPermissions, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="add" class="btn btn-success" />
</div>
</div>
</div>
</form>
家庭控制器.cs
[HttpGet("[action]")]
public ActionResult StaffPermission()
{
var query = dbContext.staff.ToList();
var queryDepartment = dbContext.Departments.ToList();
var model = new List<Staff_To_Show>();
List<Department> dataDepartment = new List<Department>();
dataDepartment.AddRange(queryDepartment);
List<staff> datastaff = new List<staff>();
datastaff.AddRange(query);
model.Add(new Staff_To_Show() { Departments = dataDepartment });
model.Add(new Staff_To_Show() { Staffs = datastaff });
return View(model);
}
[HttpPost]
public ActionResult StaffPermission(String DepartmentNumber, String StaffNumber, string AesUpd)
{
if (string.IsNullOrWhiteSpace(DepartmentNumber))
{
ModelState.AddModelError("Department", "error");
return View();
}
else
{
string[] password = getTool.Create(AesUpd);
StaffPermission addstaff = new StaffPermission();
addstaff.AesUpd = password[0];
addstaff.AesKey = password[1];
addstaff.AesIv = password[2];
addstaff.LastChangePasswordTime = DateTime.Now;
addstaff.CreateDate = DateTime.Now;
addstaff.LastUpd = password[0];
addstaff.LastKey = password[1];
addstaff.LastIv = password[2];
addstaff.IsEnabled = true;
addstaff.StaffNumber = StaffNumber;
addstaff.DepartmentNumber = Convert.ToInt16(DepartmentNumber);
dbContext.StaffPermissions.Add(addstaff);
dbContext.SaveChanges();
return View();
}
}
StaffToShow.cs
public partial class Staff_To_Show
{
public List<Department> Departments { get; set; } = null!;
public List<staff> Staffs { get; set; } = null!;
public StaffPermission StaffPermissions { get; set; } = null!;
}
StaffPermission.cs
using System;
using System.Collections.Generic;
namespace Voyager.Models.Department
{
public partial class StaffPermission
{
public int DepartmentNumber { get; set; }
public string StaffNumber { get; set; } = null!;
public string AesUpd { get; set; } = null!;
public string AesKey { get; set; } = null!;
public string AesIv { get; set; } = null!;
public DateTime? CreateDate { get; set; }
public string? LastUpd { get; set; }
public string? LastKey { get; set; }
public string? LastIv { get; set; }
public DateTime? LastChangePasswordTime { get; set; }
public bool? IsEnabled { get; set; }
public virtual staff StaffNumberNavigation { get; set; } = null!;
}
}
員工.cs
public partial class staff
{
public int DepartmentNumber { get; set; }
public string StaffNumber { get; set; } = null!;
public string? Name { get; set; }
public string? Phone { get; set; }
public string? Address { get; set; }
public string? Email { get; set; }
public bool? IsEnabled { get; set; }
public DateTime RecDate { get; set; }
public virtual Department DepartmentNumberNavigation { get; set; } = null!;
public virtual StaffPermission StaffPermission { get; set; } = null!;
}
部門.cs
public partial class Department
{
public Department()
{
staff = new HashSet<staff>();
}
public int DepartmentNumber { get; set; }
public string? DepartmentName { get; set; }
public virtual ICollection<staff> staff { get; set; }
}
任何幫助,將不勝感激
uj5u.com熱心網友回復:
您的視圖需要一個型別的模型,Staff_To_Show但在您的 HttpGet 方法中StaffPermission您創建并傳遞一個型別的模型List<Staff_To_Show>。所以你的方法應該是這樣的:
[HttpGet("[action]")]
public ActionResult StaffPermission()
{
var datastaff = dbContext.staff.ToList();
var dataDepartment = dbContext.Departments.ToList();
var model = new Staff_To_Show {
Departments = dataDepartment,
Staffs = datastaff
};
return View(model);
}
我還洗掉了多余的串列創建代碼,因為部門和員工已經是串列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/453507.html
標籤:网 asp.net-mvc asp.net 核心 剃刀
