【问题标题】:Dropdown doesn't load on selected item下拉菜单未加载到所选项目
【发布时间】:2020-03-03 20:42:26
【问题描述】:

我无法使用模型上选择的选项的下拉菜单加载编辑用户页面。添加用户时,它已正确保存在数据库中。

我尝试在编辑视图中绑定它,但由于某种原因它不起作用。

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)"  },
    };

公共 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):(我觉得是这个问题,还是edit方法的get控制器)

<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" })

【问题讨论】:

  • 遇到任何错误?
  • 不,它只会在我尝试编辑用户时加载第一个选项。
  • 好的,你在编辑数据的时候设置了dropdown的值吗?
  • 请尝试在 Edituser 视图中添加 SelectedValue @Html.DropDownListFor(m =&gt; m.ActivityLevel, new SelectList(ViewBag.activity, "Value", "Text", SelectedValue), new { @class = "form-control" })
  • @jishansiddique 是的,它在视图中:Html.DropDownListFor(m => m.ActivityLevel, new SelectList(ViewBag.activity, "Value", "Text"), new { class= "form -control" }) 以及在 get 控制器中,我这样做:activity.Single(i => i.Value == user.ActivityLevel).Selected = true; ViewBag.activity = 活动;

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


【解决方案1】:

请检查以下解决方案: 请分开您的代码,在不同的 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" })

【讨论】:

    猜你喜欢
    • 2021-03-07
    • 2018-02-16
    • 1970-01-01
    • 2011-08-31
    • 2014-11-06
    • 2020-01-11
    • 2014-06-01
    • 1970-01-01
    相关资源
    最近更新 更多