我被这个问题困住了。
我有一个模型 AssessmentModel 定义如下:
public class AssessmentModel
{
public Respondent Respondent { get; set; }
public List<CompetencyModel> Competencies { get; set; }
}
public class CompetencyModel
{
public int Id { get; set; }
public string Name { get; set; }
public List<ResultModel> Results { get; set; }
}
public class ResultModel
{
public int Id { get; set; }
public int Score { get; set; }
}
我只需要为 ResultModel 的 Score 属性设置值。分数是这里唯一可编辑的属性。
我只有 1 个视图,这个视图有一个 @model 列表,它显示 CompetencyModel 项目列表,每个项目都有编辑按钮。当我单击 Edit 按钮时,CompetencyModel 的 Id 被传递给同一个 View,并且 View 为属于所选 CompetencyModel 的 ResultModel 项绘制一个 Edit 表单。
但是 ResultModel 项的表单存在于同一个 View 上,并且 View 的模型仍然是@model List。
如何通过对每个 ResultModel 项目使用可绑定的 Html.EditorFor(m=>m.Score) 助手来获取 Score 属性?
视图定义如下:
@model List<CompetencyModel>
@foreach(var comp in Model)
{
<p>@comp.Name</p>
<a href="@Url.Action("Assessment", new { comp.Id })">Edit</a>
}
在控制器中,我设置 ViewBag.CurrentId = comp.Id,并在视图底部:
if(ViewBag.CurrentId != null) //draw a form for ResultModel items
{
// What should I do now?
// how cant I use Html.EditorFor(m=>...) if the Model is still List<CompetencyModel>
}
我需要访问单个 ResultModel 实体来为 Score 属性设置一个值。
谢谢你。