0

私は MVC4 を使用してこのプロジェクトを構築していますが、事前に入力された html を取得する方法を理解するのに少し苦労しています。

生年月日が含まれている部分で、現在の日付と照合して、その人が18歳以上か18歳未満かを確認します。年齢に応じて、ドロップダウンの検証オプションのリストを持つデータベースがあります年齢に応じて特定のものを表示するリスト。18 を超える場合は 3 つの異なる結果が表示され、18 を下回る場合は 1 つのオプションのみが表示されます。私はいくつかの異なる方法を試しましたが、そのうちの1つはビューに入れることでうまくいきました。しかし、この部分をコントローラーから実行したいのですが、ロジックをUIから分離したいだけです。これが私が取り組んでいる方法です。どんな助けも素晴らしいでしょう! 試してうまくいかなかったオプションを 1 つまたは 2 つコメントアウトしました。

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 に答える