C# ASP.NET MVC EF Core,在不同型号的选定ID上查看属性访问

C# ASP.NET MVC EF Core,在不同型号的选定ID上查看属性访问,c#,asp.net-mvc,entity-framework-core,C#,Asp.net Mvc,Entity Framework Core,我有一个问题,我有三个模型,如下所示:个人,能力,两者之间有个人能力。我当前的控制器方法从上一页获取一个Id,并显示该人员的能力和级别列表。然而,在这个视图中,我想为新的能力设置一个职位。因此,在添加一个新的时,您可以看到您已经有了哪些 使用我现在拥有的控制器方法,我可以在显示列表时访问个人能力和能力。 我无权访问AddComp视图中asp for=“competency”标记的competency属性 我需要ID的人的职位给合适的人 我需要该属性的能力类型用于POST 我需要personca

我有一个问题,我有三个模型,如下所示:
个人
能力
,两者之间有
个人能力
。我当前的控制器方法从上一页获取一个Id,并显示该人员的
能力
级别
列表。然而,在这个视图中,我想为新的
能力
设置一个职位。因此,在添加一个新的时,您可以看到您已经有了哪些

使用我现在拥有的控制器方法,我可以在显示列表时访问
个人能力
能力
。 我无权访问
AddComp
视图中
asp for=“competency”
标记的
competency
属性

  • 我需要
    ID
    的人的职位给合适的人
  • 我需要该属性的
    能力类型
    用于POST
  • 我需要
    personcaptence
    来显示当前
    personcaptence
    的列表
我用当前的
@model competinceradar.Models.Person
获得了它,我只访问Person属性

我已经考虑过使用
ViewModel
访问所有表,每个表都有
IEnumerable
,但当我搜索显示的人的Id时,这会破坏我当前的控制器。我已在视图中切换了
@model
,但无法访问个人ID/姓名

那么,我如何访问
能力
属性,列出一个人并获取该人的
个人能力

如果你想让我澄清一些事情,请告诉我。 我不需要工作代码,只需要为我指明解决方案的正确方向

  • 它是ViewModel吗
  • 我可以在没有
    asp for
    属性的情况下发布吗
型号

公共类人物
{
公共int ID{get;set;}
公共字符串名{get;set;}
公共ICollection个人能力{get;set;}
}
公共类人员能力
{
公共int ID{get;set;}
public int PersonID{get;set;}//FK
公共int能力ID{get;set;}//FK
公共整数级别{get;set;}
公共竞争能力{get;set;}
公众人物{get;set;}
}
公共课堂能力
{
公共int ID{get;set;}
公共字符串能力类型{get;set;}
公共字符串能力类别{get;set;}
公共ICollection个人能力{get;set;}
}
AddComp
Kontroller函数

公共异步任务AddComp(int?id)
{
var person=wait_context.Personer
.包括(主键=>主键个人能力)
.然后包括(k=>k.能力)
.FirstOrDefaultAsync(m=>m.ID==ID);
返回视图(人);
}
查看\u AddComp
查看
AddComp

@model CompetenceRadar.Models.Person

<h1>AddComp</h1>

<div class="row">
    <form asp-action="AddComp">
        <input type="hidden" asp-for="ID" />
        <div class="form-group col-sm-4">
            <label asp-for="#############" class="control-label col-sm-4"></label>
            <input asp-for="#############" class="form-control col-sm-4" />
            <span class="text-danger"></span>
        </div>
        <div class="form-group">
            <input type="submit" value="Save" class="btn btn-dark" />
        </div>
    </form>
</div>

@foreach (var item in Model.PersonCompetences)
{
    <div class="row py-2 rounded" style="background-color:lightslategray">
        <div class="col-sm-3 pt-2">@item.Competence.CompetenceType</div>
        <div class="col-sm-1 pt-2">@item.Niva</div>
        <div class="col-sm-3 pt-2">@item.Competence.CompetenceCategory</div>
        <div class="col-sm-5 d-flex justify-content-end">
            <a class="btn btn-dark mr-1" role="button" asp-area="" asp-controller="Competence" asp-action="UpdateLevel" asp-route-id="@item.ID">Update</a>
            <a class="btn btn-dark mr-1" role="button" asp-area="" asp-controller="Competence" asp-action="DeleteComp" asp-route-id="@item.CompetenceID">Remove</a>
        </div>
    </div>
}
@model competinceradar.Models.Person
AddComp
@foreach(模型中的var项目。个人能力)
{
@项目.能力.能力类型
@项目:Niva
@项目.能力.能力类别
更新
去除
}

简单的一点是,我需要一个包含所有三个模型的ViewModel

public class ExampleViewModel {

    public Person person { get; set; }
    public PersonCompetence personCompetence { get; set; }
    public Competence competence { get; set; }}
这使我能够访问ID、CompetencyType的不同值以及当前人员能力的列表


欢迎来到StackOverflow。如果我可以提出个人建议:你应该考虑在代码中坚持英语。这基本上是国际上最好的做法。是的,很好的建议。我现在就改。谢谢