【发布时间】: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 => 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