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。如果我可以提出个人建议:你应该考虑在代码中坚持英语。这基本上是国际上最好的做法。是的,很好的建议。我现在就改。谢谢