我正在使用 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;
}