我遇到了这个问题。
我有一个模型评估模型,定义如下:
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 项目列表,每个项目都有"编辑"按钮。当我单击"编辑"按钮时,"能力模型"的 ID 将传递到同一视图,并且该视图为属于所选"能力模型"的"结果模型"项绘制"编辑"窗体。
但是,结果模型项的窗体存在于同一视图中,并且视图的模型仍@model列表。
如何通过为每个 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 属性。
谢谢。
你应该能够使用 Linq 完成此操作。考虑在最后一个 if 语句中包含以下代码段
var result = Model.Results.FirstOrDefault(r => r.Id == ViewBag.CurrentId);
我没有 IDE,所以要注意语法错误