Html.DropDownListFor 默认选择的值不起作用

Html.DropDownListFor default selected value does not work

我已经阅读了数百篇关于这个问题的帖子,但我仍然找不到解决方案。

请帮助解决这个可怕的谜团;

我想在我的 DropDownListFor 中有不同的默认值。 “PartialViewList1 存在于 4 个项目中。 我希望 DropDownListFor select 当前项目的 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>
    }

Screen shot of the users view

我希望也许有人可以用它来解决他或她的问题。

在 Stephen Mueke 的帮助下,我找到了解决方案。问题是,如果 "x => x.PartialView.Id" 已经有一个值,那么默认值:“3”将被 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