【发布时间】:2019-07-15 15:50:08
【问题描述】:
我的视图中有一个@foreach,它可以制作一张桌子。每行有两个项目,它是td。当我单击“编辑”按钮时,一行中的可见项消失(DislayFor's),而行中的隐藏项出现(DropDownList)
查看代码
<td class="col-md-3">
<span class="item-display">
<span style="font-size: 17px">
@Html.DisplayFor(modelItem => item.Movie.Name)
</span>
</span>
<span class="item-field">
@Html.DropDownList("movieID", item.Movie.Name)
</span>
</td>
通过这样做,我可以在 DropDownList 中选择一个新值,然后将该更改保存到我的数据库中(然后隐藏 DropDownList 并取消隐藏 DisplayFor。
一切正常,但是我对最初选择的值有疑问,它出现了两次,初始值的实际 value 为 0(与数据库中的任何内容无关)。
图片示例
问题:
现在我的下拉列表添加点击编辑时的值,最初选择的项目具有正确的名称,但它的索引为 0(这对我的数据库无效)。
我希望不添加最初选择的项目,而是将下拉列表的选择器设置为相应项目的正确索引。我不确定为什么它会重复我选择的项目两次。
控制器代码
public ActionResult Index(string Filter, string searchString)
{
if (String.IsNullOrEmpty(searchString) || String.IsNullOrEmpty(Filter) || (Int32.Parse(Filter) == 0))
{
ViewBag.employeeID = new SelectList(db.Employees, "ID", "Name", );
ViewBag.movieID = new SelectList(db.Movies, "ID", "Name", initiallySelectedValue);
ViewBag.roleID = new SelectList(db.Roles, "ID", "RoleType");
var movieemployees = db.MovieEmployees.Include(m => m.Employee).Include(m => m.Movie).Include(m => m.Role);
return View(movieemployees.ToList().OrderBy(x => x.Employee.Name));
}
else
{
ViewBag.employeeID = new SelectList(db.Employees, "ID", "Name");
ViewBag.movieID = new SelectList(db.Movies, "ID", "Name");
ViewBag.roleID = new SelectList(db.Roles, "ID", "RoleType");
var parameter = Int32.Parse(Filter);
return View(db.MovieEmployees.Include(m => m.Employee).Include(m => m.Movie).Include(m => m.Role).Where(x => (parameter == 1 && x.Movie.Name.Contains(searchString)) || (parameter == 2 && x.Employee.Name.Contains(searchString)) || (parameter == 3 && x.Role.RoleType.Contains(searchString))).Distinct().ToList().OrderBy(x => x.Employee.Name));
}
}
【问题讨论】:
-
我已将您的问题读了三遍,但仍然不清楚您在问什么(至少对我而言)。我看到您正在使用
DropDownList并且似乎只是将单个字符串传递给该方法。您如何获得问题中所示的所有其他选项? -
@JustinHelgerson 我是 MVC 新手,但我“认为”这里的这条线
"movieID", item.Movie.Name是说要从movieID中的我的 Model 中取出所有项目并放置它们在那里并从item.Movie.Name获取适当的字符串名称。 (db.Movie.Name)
标签: drop-down-menu asp.net-mvc-5