Выпадающий список не загружается на выбранный элемент - PullRequest
0 голосов
/ 07 ноября 2019

Я не могу загрузить страницу редактирования пользователя с выпадающим списком на опции, выбранной на модели. При добавлении пользователя он правильно сохраняется в БД.

Я пытался связать его в режиме редактирования, но по какой-то причине он не работает.

User.cs (модель)

открытая строка ActivityLevel {get;установлен;}

Контроллер

    List<SelectListItem> activity = new List<SelectListItem>
    {
        new SelectListItem{ Selected = false ,Text = "Sedentary (little or no exercise)", Value = "Sedentary (little or no exercise)" },
        new SelectListItem{ Selected = false ,Text = "Lightly active (light exercise/sports 1-3 days/week)", Value = "Lightly active (light exercise/sports 1-3 days/week)"  },
        new SelectListItem{ Selected = false ,Text = "Moderately active (moderate exercise/sports 3-5 days/week)", Value = "Moderately active (moderate exercise/sports 3-5 days/week)"  },
        new SelectListItem{ Selected = false ,Text = "Very active (hard exercise/sports 6-7 days a week)", Value = "Very active (hard exercise/sports 6-7 days a week)"  },
        new SelectListItem{ Selected = false ,Text = "Extra active (very hard exercise/sports & a physical job)", Value = "Extra active (very hard exercise/sports & a physical job)"  },
    };

public ActionResult NewUser () {

        User u = new User();
        ViewBag.User = u;
        ViewBag.activity = activity;
        return View();
    }
    [HttpPost]
    public ActionResult NewUser(User user)
    {
        try
        {
            db.Users.Add(user);
            db.SaveChanges();
            return RedirectToAction("AllUsers");
        }
        catch (Exception e)
        {
            return View();
        }
    }



    public ActionResult EditUser(int id)
    {
        User user = db.Users.Find(id);
        ViewBag.User = user;


        activity.Single(i => i.Value == user.ActivityLevel).Selected = true;
        ViewBag.activity = activity;

        return View();
    }
    [HttpPut]
    public ActionResult EditUser(int id, User requestUser)
    {
        try
        {
            User user = db.Users.Find(id);
            if (TryUpdateModel(user))
            {
                user.Firstname = requestUser.Firstname;
                user.Lastname = requestUser.Lastname;
                user.Height = requestUser.Height;
                user.Weight = requestUser.Weight;
                user.Gender = requestUser.Gender;
                user.Age = requestUser.Age;
                user.Calories = requestUser.Calories;
                user.Bmr = requestUser.Bmr;
                user.ActivityLevel = requestUser.ActivityLevel;
                user.WeightChoice = requestUser.WeightChoice;
                db.SaveChanges();
            }
            return RedirectToAction("AllUsers");
        }
        catch (Exception e)
        {
            return View();
        }
    }

Edituser (View): (Я думаю, что это проблема, или получить контроллер изметод редактирования)

<label>Select Activity level</label>

@Html.DropDownListFor(m => m.ActivityLevel,
new SelectList(ViewBag.activity, "Value", "Text"),
new { @class = "form-control" })

Новый пользователь (просмотр):

<label>Select Activity level</label>

@Html.DropDownListFor(m => m.ActivityLevel,
new SelectList(ViewBag.activity, "Value", "Text"),
new { @class = "form-control" })

1 Ответ

0 голосов
/ 09 ноября 2019

Пожалуйста, проверьте следующее решение: Пожалуйста, отделите свой код, передайте выбранное значение в другой Viewbag, например, Viewbag.SelectedID и передайте все, что вы передаете в ViewBag.activity EditUser и используйте, как это в Edituser UI

@Html.DropDownListFor(m => m.ActivityLevel, new SelectList(ViewBag.activity, "Value", "Text", Viewbag.SelectedID), new { @class = "form-control" })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...