我已经阅读了数百篇有关此问题的帖子,我仍然无法找到解决方案。
请帮助解决这个可怕的错误;
我想在DropDownListFor中使用不同的默认值。 “PartialViewList1存在4个项目中。 我希望DropDownListFor选择当前项的id。 (item.id)
但由于测试目的,我只填写了“3”。即使这样也行不通。
模型填充正确,我能够添加更多的控制器代码,但不会增加太多。但请问你是否要我这样做。
是的,我知道在控制器中制作SelectList会更好,但首先我想让它工作。
查看:
@foreach (var item in Model.PartialViewList1)
{
<tr>
<td>Plaats: </td>
<td>@item.PlaceNumber</td>
<td>
@Html.DropDownListFor(x => x.PartialView.Id, new SelectList(Model.PartialViewList2, "Id", "Name", 3),
new { onchange = "this.form.submit();" })</td>
</tr>
}
答案 0 :(得分:0)
我希望也许有人可以用它来解决他或她的问题。
Stephen Mueke找到了解决方案。问题是如果&#34; x =&gt; x.PartialView.Id&#34;已经有一个值,然后是默认值:&#34; 3&#34;将由Id覆盖。
在将它们绑定到同一属性时,您无法生成多个DropDownlistFor。
我对我的问题的解决方案:
查看:
@using (Html.BeginForm("_PartialSettingsDropDownList1", "Home")){
<table>
@for (int i = 0; i < Model.maxNumberOfViews; i++)
{
<tr>
<td>
Plaats @(i+1)
</td>
<td>
@Html.DropDownListFor(x => Model.PartialViewList[i].ID, new SelectList(Model.PartialViewList, "Id", "Name", Model.PartialViewList[i].ID), "select")
</td>
</tr>
}
</table>
@Html.HiddenFor(x => x.maxNumberOfViews)
<input class="submit" type="submit" value="Submit" />}
控制器:
[HttpGet]
public PartialViewResult _PartialSettingsDropDownList1()
{
PartialScreenViewModel viewModel = new PartialScreenViewModel();
viewModel.PartialViewList = homeModel.AllBoxViews(databaseRepository.PartialViews);
viewModel.maxNumberOfViews = viewModel.PartialViewList.Count();
return PartialView(viewModel);
}
[HttpPost]
public RedirectResult _PartialSettingsDropDownList1(PartialScreenViewModel viewModel)
{
for (int i = 0; i < viewModel.maxNumberOfViews; i++)
{
PartialView viewOnScreen = databaseRepository.PartialViews.FirstOrDefault(x => x.ID == viewModel.PartialViewList[i].ID);
databaseRepository.UpdatePartialView(viewOnScreen, i+1);
}
return new RedirectResult("Settings");
}
型号:
public List<PartialView> AllBoxViews(IEnumerable<PartialView> allViews)
{
List<PartialView> OnlyBoxViews = new List<PartialView>();
foreach (var item in allViews.Where(item => item.Type.Equals("box")))
{
OnlyBoxViews.Add(item);
}
return OnlyBoxViews;
}
视图模型:
public class PartialScreenViewModel
{
public List<PartialView> PartialViewList { get; set; }
public int maxNumberOfViews { get; set; }
}
屏幕上的结果:screenshot