【问题标题】:Edit View with child entity selection listbox and HTTPPost difficulties编辑带有子实体选择列表框和 HTTPPost 困难的视图
【发布时间】:2011-12-30 18:00:25
【问题描述】:

我有一个搜索编辑视图,它被强输入到我的搜索模型类中,如下所示(简化)。

我想在一个列表框中显示归因于正在编辑的搜索的托管人,该列表框中显示所有托管人,并选择当前托管人。

我的控制器的 Get Edit 操作是这样的:

public ActionResult Edit(int id, int searchListId = 0)
{
    if (searchListId != 0)
    {
        Session["CurrentSearchListID"] = searchListId;  
    }
    ProjectContext mydb = db;
    Search search = Search.Find(mydb, id);
    
    IEnumerable<SelectListItem> selectedItems =
        from c in Custodian.List(mydb)
        select new SelectListItem
        {
            Selected = (search.Custodians.Contains(c)),
            Text = c.CustodianName,
            Value = c.ToString()
        };

    ViewBag.Custodians = selectedItems;
    return View(search);
}

我的视图列表框是这样的:

        @{
            //List<Kiersted.Keps.BusinessObjects.Custodian> Custodians = ViewBag.Custodians;
            IEnumerable<SelectListItem> SelectedItems = ViewBag.Custodians;
        }

        @Html.ListBox("Custodians", SelectedItems);

这会生成一个列表框,其中描绘了保管人,但没有选择(我已确认几个 SelectListItems 准确地描述了选定的保管人。我尝试使用 ListBoxFor 并在填充 MultiSelectList 时产生相同的内容。

最后我决定强迫它做我想做的事,但这不会在提交时返回选定的保管人。

<select id="Custodians" multiple="multiple" name="Custodians">
@foreach (Kiersted.Keps.BusinessObjects.Custodian cust in Custodians)
{
    if (Model.Custodians.Contains(cust))
    {
    <option value="@cust.CustodianID" selected="selected">@cust.CustodianName</option>
    }
    else
    {
    <option value="@cust.CustodianID" >@cust.CustodianName</option>
    }
}
</select>

有人知道您应该如何这样做吗?

编辑:

以列表框为例

好的,所以在摆弄了一段时间之后,我现在已经在与搜索托管人相对应的列表框中选择了托管人。下面是查看代码:

<div class="editor-field">
    @Html.ListBoxFor(model => model.Custodians, allCustodians.Select(cust => new SelectListItem {
                           Text = cust.CustodianName,
                           Value = cust.CustodianID.ToString(),
                           Selected = true}), 
                           new { Multiple = "multiple" })
</div>

如果我选择了更多的保管人,我如何在提交时让他们(或者他们的相应值)回到控件?

【问题讨论】:

    标签: c# asp.net-mvc entity-framework entity-framework-4.1 html.listboxfor


    【解决方案1】:

    【讨论】:

    • 我没有忽略你。我刚刚受命负责项目的不同部分。我将尽快尝试实施该博文中的建议。
    • @M_M 继续奖励赏金。我对以这种方式使用 ViewModel 进行了一些研究,这似乎是公认的做法。我不想让 Hendrikswan 错过 50 次代表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 2019-01-30
    • 2015-05-03
    • 1970-01-01
    • 2013-07-30
    相关资源
    最近更新 更多