Asp.net core 如何在一个视图中包含3个表asp.net core 5

Asp.net core 如何在一个视图中包含3个表asp.net core 5,asp.net-core,Asp.net Core,我有三张桌子 Customer Assign Employee 我已将Assign和Employee链接在一起,因为需要FK in Assign,但是,客户不需要任何关系,但我希望在Assign的视图索引中显示客户分配显示数据,ViewModel用于显示员工姓名 但是,如何在此视图中显示硬编码名称和Id所在的customer表 分配模型 public class Assign { [Key] public int Id { get; set; } public str

我有三张桌子

Customer
Assign
Employee
我已将
Assign
Employee
链接在一起,因为需要FK in Assign,但是,客户不需要任何关系,但我希望在
Assign
的视图索引中显示客户<代码>分配显示数据,ViewModel用于显示员工姓名

但是,如何在此视图中显示硬编码名称和Id所在的customer表

分配模型

public class Assign
{
    [Key]
    public int Id { get; set; }

    public string Name { get; set; }
    public string Tasks { get; set; }
    public string Telephone { get; set; }
    public string Address { get; set; }
    public string Status { get; set; }
    public string ImageUrl { get; set; }

    public int EmployeeNameId { get; set; }
    [ForeignKey("EmployeeNameId")]
    public virtual Employee Employee { get; set; }
}
客户模型

public class Customer
{
    [Key]
    public int Id { get; set; }

    public string Name { get; set; }
    public string Tasks { get; set; }
    public string Telephone { get; set; }
    public string Address { get; set; }
    public string ImageUrl { get; set; }
}
员工模式

public class Employee
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
    public string Speciality { get; set; }
}
指定视图模型

public class AsignVM
{
    public Asign Asign { get; set; }

    public IEnumerable<SelectListItem> TypeDropDown { get; set; }
}
公共类AsignVM
{
公共Asign Asign{get;set;}
公共IEnumerable类型下拉列表{get;set;}
}
分配控制器

public class AsignController : Controller
{
    private readonly ApplicationDbContext _db;

    public AsignController(ApplicationDbContext db)
    {
        _db = db;
    }

    public IActionResult Index()
    {
        IEnumerable<Asign> objList = _db.Asigns;
        IEnumerable<Customer> assdasd = _db.Customers;

        foreach (var obj in objList)
        {
            obj.Employee = _db.Employees.FirstOrDefault(u => u.Id == obj.EmployeeNameId);
        }

        return View(objList);
    }

    public IActionResult Create()
    {
        //IEnumerable<SelectListItem> typeDropDown = _db.Employees.Select(i => new SelectListItem
        //{
        //    Text =i.Name + "  Speciality =  " + i.Speciality,
        //    Value = i.Id.ToString()
        //});

        //ViewBag.typeDropDown = typeDropDown;

        AsignVM asignVM = new AsignVM()
        {
            Asign = new Asign(),
            TypeDropDown = _db.Employees.Select(i => new SelectListItem
            {
                Text = i.Name,
                Value = i.Id.ToString()
            })
        };

        return View(asignVM);
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public IActionResult Create(AsignVM obj)
    {
        _db.Asigns.Add(obj.Asign);
        _db.SaveChanges();

        return RedirectToAction("Index");
    }

    public IActionResult Delete(int? id)
    {
        if (id == null || id == 0)
        {
            return NotFound();
        }

        var obj = _db.Asigns.Find(id);

        if (obj == null)
        {
            return NotFound();
        }

        return View(obj);
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public IActionResult DeletePost(int? id)
    {
        var obj = _db.Asigns.Find(id);

        if (obj == null)
        {
            return NotFound();
        }

        _db.Asigns.Remove(obj);
        _db.SaveChanges();

        return RedirectToAction("Index");
    }
}
公共类AsignController:Controller
{
私有只读应用程序dbContext_db;
公共AsignController(ApplicationDbContext数据库)
{
_db=db;
}
公共IActionResult索引()
{
IEnumerable对象列表=_db.Asigns;
IEnumerable assdasd=_db.Customers;
foreach(对象列表中的var obj)
{
obj.Employee=_db.Employees.FirstOrDefault(u=>u.Id==obj.EmployeeNameId);
}
返回视图(对象列表);
}
public IActionResult Create()
{
//IEnumerable typeDropDown=\u db.Employees.Select(i=>new SelectListItem
//{
//Text=i.Name+“Speciality=“+i.Speciality,
//Value=i.Id.ToString()
//});
//ViewBag.typeDropDown=typeDropDown;
AsignVM AsignVM=新AsignVM()
{
Asign=新Asign(),
TypeDropDown=\u db.Employees.Select(i=>new SelectListItem
{
Text=i.名称,
Value=i.Id.ToString()
})
};
返回视图(asignVM);
}
[HttpPost]
[ValidateAntiForgeryToken]
公共IActionResult创建(AsignVM obj)
{
_db.Asigns.Add(对象Asign);
_db.SaveChanges();
返回操作(“索引”);
}
公共IActionResult删除(int?id)
{
如果(id==null | | id==0)
{
返回NotFound();
}
var obj=_db.Asigns.Find(id);
if(obj==null)
{
返回NotFound();
}
返回视图(obj);
}
[HttpPost]
[ValidateAntiForgeryToken]
公共IActionResult DeletePost(int?id)
{
var obj=_db.Asigns.Find(id);
if(obj==null)
{
返回NotFound();
}
_db.Asigns.Remove(obj);
_db.SaveChanges();
返回操作(“索引”);
}
}
分配索引

@model IEnumerable<HandyApp.Models.Asign>

<h1 style="margin-left: 52px;margin-top: 21px;">Customer Jobs</h1>
<div class="table-responsive" style="margin-top: 12px;">
    <table class="table">
        <thead>
            <tr>
                <th style="margin-top: 0px;width: 143px;">Customer name</th>
                <th style="margin-top: 0px;">Job ID</th>
            </tr>
        </thead>
        <tbody>
        <tr>
                <td>Name</td>
                <td>1223</td>
                <td><button class="btn btn-primary" type="button" style="margin-top: 3px; margin-bottom: 4px;">view details</button><button class="btn btn-primary" type="button" style="margin-left: 7px; margin-top: 3px; margin-bottom: 4px;">Delete</button><a class="btn btn-primary" type="button" style="margin-left: 7px; margin-top: 3px; margin-bottom: 4px;" asp-controller="Asign" asp-action="Create">assign</a></td>
            </tr>
       
        </tbody>
    </table>
</div>
<h1 style="margin-left: 52px;margin-top: 21px;">Assigned jobs</h1>
<div class="table-responsive" style="margin-top: 12px;">
    <table class="table">
        <thead>
            <tr>
                <th style="margin-top: 0px;width: 143px;">Customer name</th>
                <th style="margin-top: 0px;">Tasks</th>
                <th style="margin-top: 0px;">Status</th>
                <th style="margin-top: 0px;">Assigned to</th>

            </tr>
        </thead>
        <tbody>
            @foreach (var item in Model)
            {
            <tr>
                <td>@item.Name</td>
                <td>@item.Tasks</td>
                <td>@item.Status</td>
                <td>@item.Employee.Name</td>
                <td><a class="btn btn-primary" type="button" style="margin-left: 7px; margin-top: 3px; margin-bottom: 4px;" asp-controller="Asign" asp-action="Delete" asp-route-Id="@item.Id">Delete</a></td>
            </tr>
            }

        </tbody>
    </table>
</div>
@model IEnumerable
客户工作
客户名称
工作ID
名称
1223
查看详细信息删除分配
分配的工作
客户名称
任务
地位
分配给
@foreach(模型中的var项目)
{
@项目名称
@项目.任务
@项目.状况
@item.Employee.Name
删除
}
我已将Assign和Employee链接在一起,因为需要 但是,在assign中,客户不需要任何关系 我希望在分配的索引视图中显示客户。指定显示器 数据和视图模型用于显示员工姓名

但是,如何在此视图中显示客户表,其中 硬编码的名称和Id为

由于客户不包含与Assign、Employee和AsignVM模型的关系,要在Assign Index视图中显示客户数据,必须使用ViewDataViewBag

    public IActionResult Index()
    {
        IEnumerable<Asign> objList = _db.Asigns;
        IEnumerable<Customer> assdasd = _db.Customers;
        foreach (var obj in objList)
        {
            obj.Employee = _db.Employees.FirstOrDefault(u => u.Id == obj.EmployeeNameId);
        }
        // use ViewBag pass the data to the View
        ViewBag.Customer = assdasd;

        return View(objList);
    }
public IActionResult Index()
{
我数不清

    @if (ViewBag.Customer != null)
    {
        foreach (var item in (IEnumerable<Customer>)ViewBag.Customer)
        {
             //display the records.
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.Name)
                </td> 
            </tr>
        }
    }