我有一个asp.net MVC应用程序。我有一个viewmodel,其中包含另一个嵌套的ViewModel列表..
当我将主ViewModel绑定到我的页面时,所有内容都按预期呈现。在我的嵌套ViewModelList中,我有一些属性,其中一个是boolean,表示我页面上的一个复选框。当我将模型发布回控制器时,我希望能够遍历嵌套的viewmodellist并验证布尔值是否设置为true(在我的页面上表示为复选框)。问题是,当我发布帖子时,我页面上呈现的初始列表丢失,因此我无法捕获值。由于没有viewstate有办法处理这种非常常见的情况。这是我的2个视图模型
MainViewModel
public class CreatePersonViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string MiddleName { get; set; }
public IEnumerable<CertificationFormsViewModel> forms { get; set; }
}
public class CertificationFormsViewModel
{
public string FormID{ get; set; }
public string FormName{ get; set; }
public string FormContent { get; set; }
public bool DoAgree { get; set; }
}
我在我的主控制器的CreatePersonViewModel中填充窗体属性,并将模型渲染到我的页面,循环遍历每个窗体并显示每个窗体的复选框,代表&#34; DoAgree&#34;属性。
当我提交表单时,CreatePersonViewModel值仍然存在于我的POST控制器中,但嵌套列表为空,因此选中的复选框值为#34; DoAgree&#34;迷路了。我需要能够保留FormID和DoAgree属性,以便我可以将它们保存到我的数据库中。我需要某种隐藏的领域吗?如果是这样,我怎么能用列表来处理这个?
列表绑定在我的页面中以显示
@{foreach (var form in Model.forms)
{
@Html.CheckBoxFor(forms2 => form.DoAgree)
}