Asp.net MVC持久列表,包含POST

时间:2016-12-08 21:17:20

标签: c# asp.net asp.net-mvc

我有一个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)

  }

0 个答案:

没有答案