0

我正在使用 MVC4 来构建这个项目,我很难弄清楚如何采用预先填充的 html

包含出生日期的部分,并根据当前日期检查该人是否高于 18 岁或低于 18 岁。根据他们的年龄,我有一个数据库,其中包含一个下拉验证选项列表将根据年龄显示某些内容的列表。如果它们高于 18,它将显示 3 个不同的结果,如果低于 18,则只有 1 个选项可用。我尝试了几种不同的方法,其中一种通过将其放入视图中效果很好。但是,我想让这部分从控制器运行,我只希望逻辑与 ui 分开。这是我正在为此努力的方法,任何帮助都会很棒!我已经注释掉了我尝试过但没有奏效的一两个选项。

public void SetupValidationList(DateTime? dateOfBirth = null)
    {
        var vtList = MetadataManager.GetValidationTypes().Where(x => x.DisplayInAdminTool).Select(x => x);

        // populate drop down for Validation Method/TypeID

        List<SelectListItem> items = vtList.Select(vtitem => new SelectListItem
        {
            Text = vtitem.DisplayName,
            Value = vtitem.ID.ToString()
        }).ToList();
        items.Insert(0, new SelectListItem { Text = String.Empty, Value = String.Empty });

        // If minor then only validation option is face to face minor
        // If adult then remove face to face minor validation option
        if (dateOfBirth.HasValue)
        {
            //List<SelectListItem> validationList = new List<SelectListItem>();


            if (dateOfBirth >= DateTime.Now.AddYears(-18))
            {
                vtList(new SelectListItem { Text = "Patient Face to Face Minor" });
            }
            else
            {
                items.Add(new SelectListItem { Text = "Patient Face to Face" });
                items.Add(new SelectListItem { Text = "Patient Phone" });
                items.Add(new SelectListItem { Text = "Patient Notary" });
            }
            //if (Model.DateOfBirth >= DateTime.Now.AddYears(-18))
            //{
            //    validationList.Add(allValidationList.FirstOrDefault(s => s.Text.Contains("Minor")));
            //}
            //else
            //{
            //    validationList.AddRange(allValidationList.Where(s => !s.Text.Contains("Minor")));
            //}
        }

        ViewData["ValidationList"] = items;
    }
4

1 回答 1

0

这应该对我有用。

public List<SelectListItem> GetSelectList(DateTime? dateOfBirth)
    {
   var vtList = MetadataManager.GetValidationTypes().Where(x => x.DisplayInAdminTool).Select(x => x);

        List<SelectListItem> myList = new List<SelectListItem>();

        var items = (from n in vtList
                     select new SelectListItem
                     {
                       Text = vtitem.DisplayName,
                       Value = vtitem.ID.ToString()
                      }).ToList();

        foreach( var item in items)
          myList.Add(item);

          //I don't know, why you need this empty item:
         myList.Add(new SelectListItem() { Text = String.Empty, Value = String.Empty });

        if (dateOfBirth.HasValue)
        {
            if (dateOfBirth >= DateTime.Now.AddYears(-18))
            {
                 myList.Add(new SelectListItem() { Text = "Patient Face to Face Minor" });
            }
            else
            {
                 myList.Add(new SelectListItem() { Text = "Patient Face to Face" });
                 myList.Add(new SelectListItem() { Text = "Patient Phone" });
                 myList.Add(new SelectListItem() { Text = "Patient Notary" });
            }

        return myList; //or ViewBag.list = myList, if void()
    }
于 2013-10-04T14:02:35.177 回答